これは、pom.xmlからの抜粋です。以下を試してみましたが、プロファイルはアクティブになりませんでした。
mvn clean install -Pdev1
mvn clean install -P dev1
mvn help:active-profiles
を試したときに、アクティブなプロファイルがリストされていませんでした。 <activeByDefault>
のdev1
をtrue
に設定し、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>
自分のプロファイルがアクティブにならないのはなぜだろうか。誰かが同様の問題に遭遇しましたか?
あなたはそれを見ません
mvn help:active-profiles
コマンドに-Pdev1
がないため。
mvn help:active-profiles -Pdev1
で表示されます(ただし、明らかにそれは意味がありません)。
あなたが示したコマンド:
mvn clean install -Pdev1
mvn clean install -P dev1
は正しい。問題はおそらくnotプロファイルがアクティブ化されていないということですが、予想どおりに機能していません。
そのためには、プロファイルでactiveByDefault
をtrueに設定し、mvn help:active-profiles
を起動して効果的にアクティブになっていることを確認してから、mvn install
を起動して確認します。プロファイルが期待どおりに動作する場合(これもおそらくそうではありません)。
システムプロパティによるアクティベーションは、次のように実行できます。
<activation>
<property>
<name>foo</name>
<value>bar</value>
</property>
</activation>
-Dを指定してmvnビルドを実行し、システムプロパティを設定します
mvn clean install -Dfoo=bar
この方法は、プロジェクト成果物の推移的な依存関係にあるプロファイルの選択にも役立ちます。
この問題に遭遇したので、mvn cliコマンドの実行中に-DprofileIdEnabled=true
パラメーターを追加することにより、上記の問題を解決しました。
Mvn cliコマンドをmvn clean install -Pdev1 -DprofileIdEnabled=true
として実行してください。
このソリューションに加えて、前述の回答として言及したPOMのactiveByDefault設定を削除する必要はありません。
この回答があなたの問題を解決することを願っています。
アクティベーションセクションを削除するだけで、なぜ-Pdev1がデフォルトのfalseアクティベーションをオーバーライドしないのかわかりません。ただし、これを省略すると:
<activation> <activeByDefault>false</activeByDefault> </activation>
その後、プロファイルは-Pdev1として明示的に宣言された後にのみアクティブになります