我有一个基础项目,它是我所有常见项目的主要依赖项。所有项目都与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个步骤:
必须有更好的解决方案!
是否可以使用maven或ant文件同时执行所有三个步骤?
答案 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仓库中,您的公共项目将从那里解决它。
你仍然需要建立基础和普通(这是有道理的;你改变了一些东西,构建是这个某些东西的表现方式),但是你不必手动复制基础工件。