67

Maven プロジェクトでシステム プロパティを設定する方法 (つまり、どのようにすればよいか) はありますか?

テストと webapp (ローカルで実行中) からプロパティにアクセスしたいのですが、Java システム プロパティを使用できることがわかっています。

それを ./settings.xml などに入れる必要がありますか?

環境

私はオープンソースプロジェクトを取り、JavaDBを使用するようにデータベース構成を変更することに成功しました

現在、JavaDB の jdbc url では、データベースの場所をフル パスとして指定できます (参照:この他の質問)

またはシステム プロパティ:derby.system.home

コードは既に動作していますが、現在はすべて次のようにハードコードされています。

 jdbc:derby:/Users/oscarreyes/javadbs/mydb

そして、フルパスを削除して、次のようにします。

 jdbc:derby:mydb

そのためには、システム プロパティ ( ) を maven に指定する必要がありますが、derby.system.home方法がわかりません。

テストは junit を使用して実行され ( pom.xml にプラグインは表示されません)、Web アプリは jetty プラグインで実行されます。

コマンド ラインでシステム プロパティを指定すると、jetty で機能するように見えますが、それが実用的なものかどうかはわかりません (他のユーザーが eclipse/idea/whatever から実行する可能性があることは認められています)。

4

4 に答える 4

82

Maven プロジェクトでシステム プロパティを設定する方法 (つまり、どのようにすればよいか) はありますか? テストからプロパティにアクセスしたい [...]

Maven Surefire プラグイン構成でシステム プロパティを設定できます (テストはデフォルトでフォークされるため、これは理にかなっています)。システムプロパティの使用から:

<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.5</version>
        <configuration>
          <systemPropertyVariables>
            <propertyName>propertyValue</propertyName>
            <buildDirectory>${project.build.directory}</buildDirectory>
            [...]
          </systemPropertyVariables>
        </configuration>
      </plugin>
    </plugins>
  </build>
  [...]
</project>

と私の webapp (ローカルで実行)

ここで何を意味するのかわかりませんが、webapp コンテナーは Maven によって開始されていると仮定します。次を使用して、コマンド ラインでシステム プロパティを渡すことができます。

mvn -DargLine="-DpropertyName=propertyValue"

更新:わかりました。Jetty の場合、Maven Jetty プラグイン構成でシステム プロパティを設定することもできます。システムプロパティの設定から:

<project>
  ...
  <plugins>
    ...
      <plugin>
        <groupId>org.mortbay.jetty</groupId>
        <artifactId>maven-jetty-plugin</artifactId>
        <configuration>
         ...
         <systemProperties>
            <systemProperty>
              <name>propertyName</name>
              <value>propertyValue</value>
            </systemProperty>
            ...
         </systemProperties>
        </configuration>
      </plugin>
  </plugins>
</project>
于 2010-07-12T20:26:02.757 に答える
75

properties-maven-plugin プラグインが役立つ場合があります。

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>properties-maven-plugin</artifactId>
    <version>1.0.0</version>
    <executions>
        <execution>
            <goals>
                <goal>set-system-properties</goal>
            </goals>
            <configuration>
                <properties>
                    <property>
                        <name>my.property.name</name>
                        <value>my property value</value>
                    </property>
                </properties>
            </configuration>
        </execution>
    </executions>
</plugin>
于 2012-10-31T13:24:48.063 に答える
2

テストと webapp が同じ Maven プロジェクトにある場合は、プロジェクト POM のプロパティを使用できます。次に、特定のファイルをフィルタリングして、Maven がそれらのファイルのプロパティを設定できるようにします。フィルタリングにはさまざまな方法がありますが、最も一般的なのはリソース段階です - http://books.sonatype.com/mvnref-book/reference/resource-filtering-sect-description.html

テストと webapp が異なる Maven プロジェクトにある場合は、Windows の Maven リポジトリ フォルダー (C:\Documents and Settings\username.m2) にある settings.xml にプロパティを配置できます。プロパティをテストと webapp に読み込むには、フィルタリングまたはその他の方法を使用する必要があります。

于 2010-07-12T20:05:43.990 に答える