如何使用Maven编译和复制基础项目到几个项目?

时间:2018-03-15 14:34:43

标签: eclipse maven ant war maven-dependency-plugin

我有一个基础项目,它是我所有常见项目的主要依赖项。所有项目都与Maven一起使用。我正在使用Eclipse。现在基础项目有一个war和一个jar执行。我在我的常见项目中使用jar作为系统依赖,如下所示:

    <dependency>
        <groupId>my.group</groupId>
        <artifactId>base</artifactId>
        <version>1.0</version>
        <scope>system</scope>
        <systemPath>${basedir}/myapproot/WEB-INF/lib/base.jar</systemPath>
    </dependency>

如果我在基地做了一些改变,我需要3个步骤:

  1. 建立基础
  2. 复制jar文件
  3. 之后建立共同项目
  4. 必须有更好的解决方案!

    是否可以使用maven或ant文件同时执行所有三个步骤?

1 个答案:

答案 0 :(得分:1)

您的常见项目取决于基础项目的工件,其范围为system并使用systemPath

具有system范围的依赖关系未从Maven存储库中解析,因此您的公共项目将始终在此处my.group:base查找${basedir}/myapproot/WEB-INF/lib/base.jar

这解释了为什么必须手动复制基础项目的工件。

如果你删除......

<scope>system</scope>
<systemPath>${basedir}/myapproot/WEB-INF/lib/base.jar</systemPath>

...然后您的公共项目将从您的Maven存储库中解析my.group:base。然后,在基础项目上运行mvn install会将my.group:base安装到您的Maven仓库中,您的公共项目将从那里解决它。

你仍然需要建立基础和普通(这是有道理的;你改变了一些东西,构建是这个某些东西的表现方式),但是你不必手动复制基础工件。