10

JUnit4.8.1でMaven3.0.3を使用しています。JUnitテストで、Maven pom.xmlファイルで定義されているproject.artifactIdを読み取るにはどうすればよいですか?私のpomで、私は持っています

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.myco.pplus2</groupId>
<artifactId>pplus2</artifactId>

しかし、これはアーティファクトIDを取得するための私のJUnitテスト内では機能していません...

@Before
public void setUp() { 
    ...        
    System.out.println( "artifactId:" + System.getProperty("project.build.sourceEncoding") ); 
}   // setUp

上記は「artifactId:null」を出力します。とにかく、助けてくれてありがとう、-デイブ

4

3 に答える 3

10

Maven プロジェクトのプロパティは、Java システム プロパティに自動的に追加されません。それを達成するには、かなりの数のオプションがあります。この特定のニーズに対しては、maven-surefire-plugin (テストを実行するプラグイン) のシステム プロパティを定義し、System.getProperty メソッドを使用できます。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.10</version>
    <configuration>
        <systemProperties>
            <property>
                <name>projectArtifactId</name>
                <value>${project.artifactId}</value>
            </property>
        </systemProperties>
    </configuration>
</plugin>

Maven プロパティを JUnit テストに取得する他の方法は、おそらくテスト ソース ファイルのリソース フィルタリングでしょう。

PS。テストであっても、実行時にMaven構成を読み取ることはかなり汚いIMHOです。:)

于 2011-10-26T20:30:53.207 に答える
7

確実にsystemPropertyVariables(およびその友人)を見てください。それはあなたが望むことをします。私の知る限り、すべてのMavenプロパティをリストせずに渡す方法はありません。

于 2011-10-26T19:53:05.203 に答える