0

Java Application のビルド ツールとして maven 2.2.1 バージョンを使用しています。

この Maven ツールを使用して、いくつかのディレクトリに war ファイルを作成し、それをサーバー (Tomcat) にコピーしています。

これは以下の行で機能します

<copy file="D:/MyProject/target/Test.war"
tofile="C:/Softwares/apache-tomcat-6.0.33/webapps/Test.war" />

これはすべて正常に動作します。

ここで私の質問は、ディレクトリをハードコーディングする代わりに、ディレクトリパスを別の場所に指定できますか??

project.build.directory src ディレクトリとターゲット ディレクトリでこれらをproject.build.outputDirectory確認しましたが、ファイルでこのプロパティ名を指定できますか??

よろしくお願いします。

4

1 に答える 1

1

戦争パスには、組み込みのMavenプロパティを使用できます。

${project.build.directory}/${project.build.finalName}.${project.packaging}

デプロイメントパスをカスタムMavenプロパティとして設定する必要があります。これを行うにはいくつかの方法があります。1つは、次のようにpomに直接設定することです。

<properties>
  <deploy.path>C:/Softwares/apache-tomcat-6.0.33/webapps/Test.war</deploy.path>
</properties>

ただし、これは、変数内だけで、pom内のパスをハードコーディングするのは依然として困難です。

もう1つの方法は、properties-maven-pluginを使用してプロパティファイルを読み込むことです。これにより、ユーザー固有の設定がpomから除外され、プロパティファイルをソース管理から除外できます。ただし、これはMavenで推奨される方法ではなく、このプラグインは将来のバージョンでサポートされなくなる可能性があります。

これを行うMavenの方法は、デプロイパスを〜/ .m2/settings.xmlファイルに保存することです。このプロパティは、デフォルトでアクティブにできるプロファイルに組み込まれます。説明については、このページを参照してください。

deploy.path変数を設定したら、copyステートメントを次のように変更します。

<copy file="${project.build.directory}/${project.build.finalName}.${project.packaging}"
    tofile="${deploy.path}" />

編集:

最小限のサンプルプロジェクトでは、次のプロパティがすべて設定されています。

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.7</version>
    <executions>
      <execution>
        <id>compile</id>
        <phase>compile</phase>
        <configuration>
          <target>
            <echo message="project.build.directory: ${project.build.directory}"/>
            <echo message="project.build.finalName: ${project.build.finalName}"/>
            <echo message="project.packaging: ${project.packaging}"/>           
          </target>
        </configuration>
        <goals>
          <goal>run</goal>
        </goals>
      </execution>
    </executions>
  </plugin>

これらのプロパティが設定されていない場合は、pom.xmlを投稿できますか?

于 2012-05-23T15:08:47.263 に答える