기본적으로 POM에 두 개의 프로파일을 추가하여 source-jars 플러그인을 사용하도록 실제 목표를 달성 할 수 있습니다. 당신이 activation
섹션에 요소 <activeByDefault>true</activeByDefault>
를 추가하고 모든 빌드에 대해 같은 POM의 다른 프로파일이 이전에 설명한 방법 중 하나를 사용하여 활성화되어 있지 않으면
이 프로필이 자동으로 활성화됩니다한다고 할 수 Maven profiles documentation 노트
따라서 두 프로파일을 관련 플러그인을 포함하는 activeByDefault
이고 다른 하나는 표준 방법으로 활성화 할 수 있습니다 (예 : -P
: 명령 줄에서 -P
). 프로필 실행 중. 당신의 pom.xml
(또는 메이븐 설정 또는 무엇이든)의 profiles
섹션 따라서 다음과 같습니다
<profile>
<id>source-jars</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
...
</plugin>
</plugins>
</build>
</profile>
<profile>
<!-- active this profile to disable the source-jars plugin -->
<id>no-optional-plugins</id>
</profile>
불행히도,이 방법은 여러 플러그인을 제어하기위한 잘 확장 할 수있는 방법을 볼 수 없습니다 - 당신이 필요가 있다고 생각 O(n^2)
에 대한 프로필은 n
개이지만이 간단한 경우에는 정상적으로 작동합니다.
메이븐 ≥ 2.0.10 또 다른 가능성 간단한 옵션은 위의 (아직 activeByDefault
)에서 source-jars
프로파일을 가지고 있으며, manually deactivate the profile 당신은 -P
CLI 플래그 후 -
또는 !
와 프로필 ID를 접두어로 할 때 :
$ mvn -P !source-jars
이 방법은 여러 플러그인에서 동일한 O(n^2)
문제가 없지만 시스템 속성, 환경 변수, JDK 버전 등으로 인해 비활성화가 트리거 될 수 없으므로 유연성이 떨어집니다.
paven은 maven-source-plugin이 기본적으로 실행되는 곳에서 작성되므로 사용자가 제안한대로 재구성해야합니다. –
프로필을 사용하여 플러그인을 기본적으로 설정하고 사용하지 않는 것이 바람직한 경우가 많습니다. 나는이 해답이 그것을 해결하지 않고 문제를 피한다고 생각한다. – Kevin
@Mowgli 그러나 Maven 프로파일 시스템은 그다지 적합하지 않습니다. "활성화"메커니즘 만 있고 "비활성화"메커니즘은 없습니다. 일부 플러그인은 자체적으로 비활성화 메커니즘을 구축하여이 문제를 해결합니다 (예 : surefire 플러그인 용 skipTests). –