我有一个名为MyWebProject的Web项目,它也包含子模块并打包为POM,我有另外两个简单的java项目,名为SimpleJavaProject1和SimpleJavaProject2,它包装为JAR。
我对web peoject都有依赖性。所以我必须使用Maven Profile和Overlays这样的方式,当我用构建JavaProject1构建和打包我的web项目时,web项目在其战争中包含SimpleJavaProject1,当我说JavaProject2时它应该包括SimpleJavaProject2。并且它应该仅对指定的java项目使用Overlays。
我可以在个人资料中使用叠加层吗?
请提出一些想法,如果有的话......
答案 0 :(得分:1)
我不熟悉叠加层,但希望这种方法也适用于它们。
通常可以通过在父POM中根据配置文件定义属性来解决此类问题:
<profiles>
<profile>
<id>JavaProject1</id>
<properties>
<java.project>SimpleJavaProject1</java.project>
<java.project.version>1.1</java.project.version>
</properties>
</profile>
<profile>
<id>JavaProject2</id>
<properties>
<java.project>SimpleJavaProject2</java.project>
<java.project.version>1.2</java.project.version>
</properties>
</profile>
</profiles>
然后在定义依赖项时使用此属性(并希望您的叠加层也是如此):
<dependency>
<groupId>com.foo</groupId>
<artifactId>${java.project}</artifactId>
<version>${java.project.version}</version>
</dependency>
答案 1 :(得分:1)
知道了...引用@Duncan的答案我试过跟随它的工作。 : - )
以下是我的个人资料,
<profile>
<id>JavaProject1</id>
<properties>
<roject.groupId>mygroupId</project.groupId>
<roject.artifactId>myartifactId</project.artifactId>
<roject.version>${myversion}</project.version>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>JavaProject2</id>
<properties>
<roject.groupId>mygroupId</project.groupId>
<roject.artifactId>myartifactId</project.artifactId>
<roject.version>${myversion}</project.version>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
我在war插件中添加了叠加,如下所示,
<overlays>
<overlay>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<type>jar</type>
<targetPath>WEB-INF/classes</targetPath>
</overlay>
</overlays>
它运作成功。 : - )