Maven : 명령 줄에서 프로필을 활성화하려면 어떻게하나요?


81

이것은 내 pom.xml의 스 니펫입니다. 다음을 시도했지만 프로필이 활성화되지 않았습니다.

mvn clean install -Pdev1
mvn clean install -P dev1

시도했을 때 mvn help:active-profiles활성 상태로 나열된 프로필이 없습니다. 내가 설정 한 경우 <activeByDefault>에 대해 dev1true, 그리고 실행 mvn help:active-profiles, 그것은 프로파일이 활성화되어 나에게 보여줍니다.

<profile>
        <id>dev1</id>
        <activation>
            <activeByDefault>false</activeByDefault>
        </activation>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <configuration>
                        <systemPropertyVariables>
                            <env>local</env>
                            <properties.file>src/test/resources/dev1.properties</properties.file>
                        </systemPropertyVariables>
                        <suiteXmlFiles>
                            <suiteXmlFile>src/test/resources/dev1.testng.xml</suiteXmlFile>
                        </suiteXmlFiles>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>
    <profile>
        <id>dev2</id>
        <activation>
            <activeByDefault>false</activeByDefault>
        </activation>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <configuration>
                        <systemPropertyVariables>
                            <env>local</env>
                            <properties.file>src/test/resources/dev2.properties</properties.file>
                        </systemPropertyVariables>
                        <suiteXmlFiles>
                            <suiteXmlFile>src/test/resources/dev2.testng.xml</suiteXmlFile>
                        </suiteXmlFiles>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>

내 프로필이 활성화되지 않는 이유가 궁금합니다. 비슷한 문제가 발생한 사람이 있습니까?


받는다는와 적어도 3.5.3 -P예상 ... FWIW ... 같은 작업을 수행
rogerdpack

답변:


90

두 명령 모두 정확합니다.

mvn clean install -Pdev1
mvn clean install -P dev1

문제는 프로필 활성화가 아닐 가능성이 높지만 프로필 이 예상대로 수행하지 못하는 것 입니다.

다음 명령은 정상입니다.

mvn help:active-profiles

에 포함되어 있지 않으므로 프로필을 표시하지 않습니다 -Pdev1. 프로필을 표시하기 위해 추가 할 수는 있지만 maven 자체를 테스트하기 때문에 무의미합니다.

다음을 수행하여 프로필 동작확인 해야합니다 .

  1. 세트 activeByDefaulttrue프로파일 구성에서,
  2. 실행 mvn help:active-profiles(없이도 효과적으로 활성화 되도록 하기 위해 -Pdev1),
  3. 실행 mvn install.

이전과 동일한 결과를 제공해야하므로 문제가 예상 한대로 작동하지 않는 프로필인지 확인합니다.


1
예, activeByDefault를 true로 설정하면 mvn help : active-profiles 아래에 표시됩니다. 그러나 mvn clean install -Pdev1을 실행하면 프로필이 활성화되지 않습니다.
나태한

14

시스템 속성에 의한 활성화는 다음과 같이 수행 할 수 있습니다.

<activation>
    <property>
        <name>foo</name>
        <value>bar</value>
    </property>
</activation>

그리고 -D로 mvn 빌드를 실행하여 시스템 속성을 설정하십시오.

mvn clean install -Dfoo=bar

이 방법은 또한 프로젝트 아티팩트의 전이 종속성에서 프로필을 선택하는 데 도움이됩니다.


내 경우에는 속성을 사용하면 검토하시기 바랍니다 수 있습니다, * .properties의에서 개최 홀더를 장착하지 stackoverflow.com/questions/51186963/...
vikramvi

11

이 문제가 발생하여 -DprofileIdEnabled=truemvn cli 명령을 실행하는 동안 매개 변수를 추가하여 언급 된 문제를 해결했습니다 .

mvn cli 명령을 다음과 같이 실행하십시오 mvn clean install -Pdev1 -DprofileIdEnabled=true.

이 솔루션 외에도 이전 답변에서 언급 한 POM에서 activeByDefault 설정 을 제거 할 필요가 없습니다 .

이 답변이 문제를 해결하기를 바랍니다.


누군가가 MVN 깨끗한 -Prelease -DprofileIdEnabled = 사실 -DskipTests를 설치 빌드도에 대한 빠른 검사를 생략 할 수 있습니다
Yeasin 아르곤 라흐만에게

5

활성화 섹션을 제거하십시오. -Pdev1이 기본 거짓 활성화를 무시하지 않는 이유를 모르겠습니다. 그러나 이것을 생략하면 :

<activation> <activeByDefault>false</activeByDefault> </activation>

그러면 프로필이 -Pdev1로 명시 적으로 선언 된 후에 만 ​​활성화됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.