代码之家  ›  专栏  ›  技术社区  ›  mhshams

maven配置文件依赖项

  •  10
  • mhshams  · 技术社区  · 14 年前

    profile-a可以独立使用,但是profile-b应该与profile-a一起运行

    mvn install -P profile-a                   // valid
    mvn install -P profile-a,profile-b         // valid
    mvn install -P profile-b                   // INVALID
    

    或者如果profile-b单独使用,则自动激活profile-a?

    3 回复  |  直到 14 年前
        1
  •  9
  •   Community Mr_and_Mrs_D    7 年前

    是否仍要确保用户无法仅使用profile-b安装模块?或者如果profile-b单独使用,则自动激活profile-a?

    Brett's answer 对一个相关的问题)也不严格禁止使用给定的配置文件。

    最好的方法是使用属性激活和 常见的

    <project>
      ...
      </dependencies>
      <profiles>
        <profile>
          <id>profile-a</id>
          <activation>
            <property>
              <name>propertyX</name>
            </property>
          </activation>
        </profile>
        <profile>
          <id>profile-b</id>
          <activation>
            <property>
              <name>propertyX</name>
            </property>
          </activation>
        </profile>
      </profiles>
    </project>
    

    调用mvn时传递属性将同时触发这两个操作:

    $ mvn help:active-profiles -DpropertyX
    [INFO] Scanning for projects...
    [INFO]                                                                         
    [INFO] ------------------------------------------------------------------------
    [INFO] Building Q4099626 1.0-SNAPSHOT
    [INFO] ------------------------------------------------------------------------
    [INFO] 
    [INFO] --- maven-help-plugin:2.1.1:active-profiles (default-cli) @ Q4099626 ---
    [INFO] 
    Active Profiles for Project 'com.stackoverflow:Q4099626:jar:1.0-SNAPSHOT': 
    
    The following profiles are active:
    
     - profile-a (source: pom)
     - profile-b (source: pom)
    

    这并不理想,但目前,这是你能得到的最好的。

    相关问题

        2
  •  1
  •   Gábor Lipták    11 年前

    <build>
      <plugins>
        <plugin>
          <groupId>org.codehaus.gmaven</groupId>
          <artifactId>gmaven-plugin</artifactId>
          <executions>
            <execution>
              <id>check-profile-combinations</id>
              <phase>validate</phase>
              <goals>
                <goal>execute</goal>
              </goals>
              <configuration>
                <source>
                  List profiles = project.getActiveProfiles()
                  boolean profileAPresent=false
                  profiles.each {
                    if ( it.getId().equals("profile-a" ) {
                      profileAPresent=true
                    }
                  }
                  if ( !profileAPresent ) {
                    fail("profile-b can be used only together with profile-a")
                  }
                </source>
              </configuration>
            </execution>
          </executions>
        </plugin>
      </plugins>
    </build>
    
        3
  •  0
  •   jgifford25    14 年前

    尝试使用 activation 通过检查是否设置了属性来检查profile-a中的元素。然后在profile-b中设置属性,使profile-a变为活动状态。

    推荐文章
    Skywolf  ·  将声纳升级至3.7.2
    11 年前