如何平整maven个人资料?

时间:2016-12-13 08:19:43

标签: maven maven-3

我有一个配置不同平台的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中。

1 个答案:

答案 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