我有一个配置不同平台的jar。使用配置文件处理差异(包括依赖关系的不同依赖关系和不同版本)。
<profiles>
<profile>
<id>PlatformA</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<dependencies>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.5</version>
</dependency>
</dependencies>
</profile>
</profiles>
<profiles>
<profile>
<id>PlatformB</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<dependencies>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
</dependencies>
</profile>
</profiles>
现在的问题是,当我为平台A构建时,安装的pom没有改变。这意味着当jar使用服务时,需要使用-PPlatformA激活配置文件PlatformA(或PlatformB)。否则,将不会处理依赖项。
那么有没有办法将内容平面放入pom并安装扁平的pom?这意味着当使用-PPlatformA来构建jar时,安装的pom将没有任何配置文件,只需将PlatformA内容合并到pom中。
答案 0 :(得分:0)
AFAIK不可能“隐藏”个人资料设置。
但是,当您使用属性定义依赖项的版本时,可以缩短配置文件,而不是定义依赖项:
<profiles>
<profile>
<id>PlatformA</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<commons-lang.version>2.5</commons-lang.version>
</profile>
<profile>
<id>PlatformA</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<commons-lang.version>2.6</commons-lang.version>
</profile>
</profiles>
<dependencies>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>${commons-lang.version}</version>
</dependency>
</dependencies>
还有一个插件可以帮助构建不同平台的工件,而无需使用配置文件。请看building for multiple environments。