зависимость профиля maven - PullRequest
       53

зависимость профиля maven

10 голосов
/ 04 ноября 2010

У меня есть модуль maven с 2 профилями profile-a и profile-b

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

Есть ли способ убедиться, что пользователь не может установить модуль только с профилем-b? или автоматически активировать профиль -a, если профиль-b используется один?

Ответы [ 3 ]

9 голосов
/ 04 ноября 2010

Есть ли способ убедиться, что пользователь не может установить модуль только с профилем-b? или автоматически активировать профиль -a, если профиль-b используется один?

Нет, нет способа вызвать профиль из другого (не поддерживается, см. ответ Бретта на связанный вопрос) или строго запретить использование данного профиля.

Лучшее, что вы можете сделать, это использовать активацию свойства и свойство common для активации обоих профилей:

<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)

Это не идеально, но в настоящее время это лучшее, что вы можете получить.

Похожие вопросы

1 голос
/ 29 августа 2013

Поместите это в профиль-б.По крайней мере, вы предотвращаете плохие сборки и информируете пользователя.Я не проверял это, но это должно работать.Если есть какая-то опечатка, пожалуйста, исправьте ее:

<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>
0 голосов
/ 04 ноября 2010

Попробуйте использовать элемент активации в profile-a, проверив, установлено ли свойство.Затем в profile-b установите свойство, чтобы profile-a стал активным.

...