我目前在处理Maven方面有些困难:我的项目由几个嵌套模块组成,对于其中一些模块,POM文件中存在类似的配置。
我希望把它整理得更清晰。实际上,我想定义一个“可运行JAR”通用配置,并在某些模块中激活它。
这是我想在多个项目之间共享的POM片段:
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<!-- Use a custom descriptor, with suffix "bin" -->
<descriptors>
<descriptor>src/main/assembly/runnable-jar-assembly.xml</descriptor>
</descriptors>
<!-- Add main class to manifest -->
<archive>
<manifest>
<mainClass>${mainClass}</mainClass>
</manifest>
</archive>
</configuration>
<!-- Add build of this package to lifecycle -->
<executions>
<execution>
<id>make-runnable-jar</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
在一些POMS中,我希望能够做到以下操作:
<!-- Set the main class -->
<properties>
<mainClass>my.main.Class</mainClass>
</properties>
<!-- Activate runnable jar build -->
<import>src/main/pom/runnable-jar-pom.xml</import>
我已经搜索了一种方法来将一些XML片段导入到POM中,或者定义一个完整的XML节点集宏。
根据我所发现的,最接近的解决方案是在父POM中定义一个配置文件,并通过测试文件的存在来在某些子模块中激活它。参见这个相关问题。但我面临的问题是未正确继承/设置
{basedir}
属性。我认为需要使用hack来完成如此基本(常规)的任务非常令人惊讶。你通常如何在Maven中处理这个问题?