答案 0 :(得分:0)
使用Maven,您无法过滤属于已构建的JAR模块的文件 每个模块都是单独构建和打包的。所以,如果JAR需要有一个动态填充值的属性,我可能会建议你两个解决方案:
在每个EAR和JAR端放置包含conf.path
键值的属性文件,您可以使用辅助类在类路径中查找与{{1}关联的值键。
您可以在需要值时执行此处理,或者在应用程序启动后立即执行此处理。
创建两种属性不同的JAR。在这种情况下,财产信息不再存储在EAR中,而是直接存储在JAR中
Look at the classifier
element:
分类器允许区分构建的工件 相同的POM但内容不同。这是一些可选的 任意字符串 - 如果存在 - 附加到工件名称 就在版本号之后。作为这个元素的动力, 例如,考虑提供针对JRE的工件的项目 1.5但同时也是一个仍支持JRE 1.4的工件。第一个工件可以配备分类器jdk15和 第二个使用jdk14,客户可以选择使用哪个。
分类器的另一个常见用例是需要附加 二次工件到项目的主要工件。如果你浏览了 Maven中央存储库,你会注意到分类器的来源 和javadoc用于部署项目源代码和API文档 以及打包的类文件。
要生成多个jar,请以这种方式在构建中配置conf.path
插件:
maven-jar-plugin
在你的WAR中引用了jarVersion神器,就像战争1:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<classifier>jarVersion2</classifier>
<includes>
<include>**/jarVersion2.properties</include>
</includes>
</configuration>
</execution>
<execution>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<classifier>jarVersion1</classifier>
<includes>
<include>**/jarVersion1.properties</include>
</includes>
</configuration>
</execution>
</executions>
</plugin>
就像战争2那样:
<dependency>
<groupId>groupIdOfTheJar</groupId>
<artifactId>artifactIdOfTheJar</artifactId>
<version>versionOfTheJar</version>
<classifier>jarVersion1</classifier>
</dependency>