【问题标题】:Integrating Maven & Non-maven projects集成 Maven 和非 Maven 项目
【发布时间】:2010-12-09 22:00:13
【问题描述】:

我目前正在同时从事两个项目:

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

鉴于我经常同时开发这两者,我如何设置 maven 以将 OSS 项目用作摩擦最小的依赖项?

【问题讨论】:

    标签: maven-2


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      我在 build.xml 文件中添加了一个安装任务,它将编译后的 .jar 安装到本地 repo 中。

      虽然在项目中添加一个成熟的 pom 肯定是最好的方法,但这是一项主要工作,并且会给项目带来 maven(其他用户不愿意使用它)。

      【讨论】:

        【解决方案3】:

        如果 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]
        

        【讨论】:

          【解决方案4】:

          我能想到几个解决方案:

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

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

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

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-04-25
            • 1970-01-01
            • 2012-12-02
            • 1970-01-01
            • 2011-10-15
            • 1970-01-01
            • 1970-01-01
            • 2014-06-23
            相关资源
            最近更新 更多