1

我在没有互联网代理的专用网络中工作。

我也无法创建涉及官僚机构的本地存储库,管理层不允许这样做。我可能是一个长期的解决方案,但不是我提出的问题的解决方案。

我不能将 maven 作为构建工具,因为它需要直接或间接的 Internet 连接。

我必须使用 ANT 来构建项目,因此在离线模式下使用 maven 也不是我的选择。

但是我仍然想使用 maven 依赖管理来巧妙地收集一个存档中的所有 jar。

我的计划是生成一个包含使用 maven 解析的依赖项的 ZIP 文件。然后我们会将这个 ZIP 文件分享给在没有互联网连接的专用网络中工作的所有开发人员。

为此,我将获得对具有 Internet 连接的计算机的临时访问权限,并从那里定义一个具有所有所需依赖项的虚拟 POM。

现在的问题是如何使用包含在 POM 中定义的所有依赖项的 maven 生成 ZIP 文件(而不是单个 jar)。

4

3 回答 3

1

虽然您的建议在技术上是可行的,但(在我看来)这不是解决您问题的最佳方法。

你的声明

it requires the direct or indirect internet connection

不准确。Maven 需要的是一个 Maven 存储库(或其中的一组)来从中获取内容。解决您的问题的最佳方法是在您组织的网络中安装本地 Maven 存储库。本地运行的 maven 存储库的 2 个最受欢迎的选择似乎是nexusartifactory - 两者都提供免费的开源版本和付费的受支持的专业版本。

一旦您在组织的网络中设置了一个 Maven 存储库并使用您需要的工件填充它,您就可以简单地配置您项目的所有 pom 文件以转到这些存储库。例如,要将 maven 配置为使用您的 repo 而不是 maven Central,您可以这样做:

<repositories>
    <!-- override central -->
    <repository>
        <id>central</id>
        <url>http://your.repo.location</url>
    </repository> 
</repositories>

您将需要以类似的方式映射插件存储库。如果您不希望在 pom 文件中这样做,也可以通过在每个用户的主目录中配置 maven settings.xml 文件来实现这一点,但根据我的经验,这种方式不易出错

于 2013-06-26T07:29:10.327 回答
0

我最终得到了一个聪明的 hack,它可以让我进行依赖解析和归档!

我正在创建一个虚拟 Maven Web 项目,其中包含在 pom xml 中定义的所有依赖项。

现在 web 应用程序默认使用 war 打包模式。

我只是从面向互联网的机器上安装 maven 项目。

我在war文件的“lib”目录中获得了所有依赖项和传递依赖项,依赖项命名版本保持不变!!!!

将这些文件复制并添加到 ANT 项目中是一项微不足道的任务......!

于 2013-06-27T05:48:50.883 回答
0

使用以下命令Maven离线构建项目。

mvn -o package

请参阅以获取更多信息。

于 2013-06-26T07:35:57.113 回答