整合Maven&非专业项目

时间:2009-10-25 14:51:27

标签: maven-2

我目前正在同时开展两个项目:

  • 我的主要项目(用maven建造)
  • 一个开源项目的高峰,我的主要项目依赖于(不是用maven构建)

我如何设置maven以将OSS项目用作摩擦力最小的依赖项,因为我经常将这两者串联起来?

4 个答案:

答案 0 :(得分:10)

我可以想到几个解决方案:

  1. 对现有的OSS项目进行Mavenize。这当然是“理想”选项,但通常不可行(即使您将新的构建系统与现有系统并行引入)。该项目可能存在一个与Maven标准布局不同的现有项目结构。开发人员可能不希望更改现有布局和构建脚本,使用Maven构建来使用非标准布局可能会很痛苦。在这两种情况下,你都搞砸了。

  2. 使用Maven包装现有的Ant构建。如果要在项目的生命周期中包含OSS项目的构建并将它们都内置在一个项目中,这可能会很好步。您可以查看this answer on SO,了解有关如何执行此操作的详细信息。

  3. 在现有版本中使用Apache IvyMaven Ant Task在本地存储库中生成并安装Maven工件。将此工件用作Maven项目中的常规依赖项(除非您必须手动声明其传递依赖项)。如果单独构建两个项目不是问题,这可能是更快,更少侵入性的方法。

  4. 看起来你选择了选项3.我认为这是一个快速获胜的好选择。

答案 1 :(得分:1)

我使用的解决方案是maven-ant任务(http://maven.apache.org/ant-tasks/)。

我在build.xml文件中添加了一个安装任务,该文件将已编译的.jar安装到本地存储库中。

虽然在项目中添加一个成熟的pom绝对是最好的方法,但这是一项重要的工作,并且在项目上造成了maven(其他用户不愿意使用它)。

答案 2 :(得分:0)

我认为您可能需要咬紧牙关并为您的OSS项目树设置POM。这是一个痛苦的部分(因为您需要根据OSS应用程序类型(即Web等)查找为各种插件指定资源路径的详细信息)。好消息是这是一次性的努力。

完成后,您的主项目可以将(包装的)OSS项目称为依赖项。这里将采用(标准maven)多项目结构。

答案 3 :(得分:0)

如果OSS项目具有依赖项 - 创建具有这些依赖项的POM(您的项目将使用它们作为传递依赖项)并将该工件和pom安装在本地存储库中。如果OSS项目没有任何其他依赖项更简单 - 在安装过程中会自动生成POM。

对于这两种情况,请使用maven-install-plugin

mvn install:install-file -Dfile=your-artifact-1.0.jar \
                     [-DpomFile=your-pom.xml] \
                     [-Dsources=src.jar] \
                     [-Djavadoc=apidocs.jar] \
                     [-DgroupId=org.some.group] \
                     [-DartifactId=your-artifact] \
                     [-Dversion=1.0] \
                     [-Dpackaging=jar] \
                     [-Dclassifier=sources] \
                     [-DgeneratePom=true] \
                     [-DcreateChecksum=true]