首页 > 解决方案 > 当另一个配置文件触发时不起作用

问题描述

我的个人资料看起来像这样。

    <profile>
      <id>active-by-default</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <dependencies>
        <dependency>
          <groupId>org.mongodb</groupId>
          <artifactId>mongodb-driver-sync</artifactId>
          <version>${version.org.mongodb}</version>
          <scope>provided</scope>
        </dependency>
      </dependencies>
    </profile>
    <profile>
      <id>java8</id>
      <activation>
        <jdk>(,1.8]</jdk>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>com.github.wvengen</groupId>
            <artifactId>proguard-maven-plugin</artifactId>
            <configuration>
              <libs>
                <lib>${java.home}/lib/rt.jar</lib>
                <lib>${java.home}/lib/jce.jar</lib>
                <lib>${java.home}/lib/jsse.jar</lib>
              </libs>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
    <profile>
      <id>java9</id>
      <activation>
        <jdk>[1.9,)</jdk>
      </activation>
      <build>
        <plugins>
          <plugin>
            <groupId>com.github.wvengen</groupId>
            <artifactId>proguard-maven-plugin</artifactId>
            <configuration>
              <libs>
                <lib>${java.home}/jmods/java.base.jmod</lib>
              </libs>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>

这两个java-配置文件适用于 ProGuard。而且我发现active-by-default即使没有指定配置文件,配置文件也不起作用。

当我删除java-符合我当前 JDK 版本的那些配置文件时,我发现它有效。

这是故意的吗?

标签: maven

解决方案


是的,这是记录在案的行为:

除非使用上述方法之一激活同一 POM 中的另一个配置文件,否则此配置文件将自动对所有构建处于活动状态。当在命令行或通过其激活配置激活 POM 中的配置文件时,默认情况下处于活动状态的所有配置文件都会自动停用。

https://maven.apache.org/guides/introduction/introduction-to-profiles.html


推荐阅读