配置Maven以创建具有在POM XML中定义的所有依赖关系的存档文件

时间:2013-06-26 07:17:59

标签: java maven dependencies collaboration

我在没有互联网代理的私人网络中工作。

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

我无法将maven作为构建工具,因为它需要直接或间接的互联网连接。

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

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

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

为此,我将临时访问具有互联网连接的计算机,并从那里我将定义一个虚拟POM,其中包含所有必需的依赖项。

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

3 个答案:

答案 0 :(得分:1)

虽然你提出的建议在技术上是可行的,但(在我看来)并不是你问题的最佳解决方案。

你的陈述

it requires the direct or indirect internet connection

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

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

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

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

答案 1 :(得分:0)

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

mvn -o package

有关详细信息,请参阅thisthis

答案 2 :(得分:0)

我最终得到了一个智能黑客,让我可以进行依赖解析和存档!

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

现在,战争打包模式默认用于Web应用程序。

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

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

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