14

私のMavenプロジェクトで、異なる分類子を持つ3つのアーティファクトを一度に生成したい. モジュールなどで作成できることはわかっています。これは、実際には、DEV、STAGE、および PROD 環境の構成を作成したいリソース プロジェクトです。

私がしたいのは、mvn:install一度実行してmy.group:resources:1.0:devmy.group:resources:1.0:stageおよびmy.group:resources:1.0:prodリポジトリにあることです。

4

2 に答える 2

15

複数のプラグイン実行とリソース フィルタリングを指定する場合、これはプロファイルなしで実行できます。

${basedir}/src/main/filters環境ごとに適切な値を保持する各バージョン (prod.properties、dev.properties など)のプロパティ ファイルを作成します。

リソースのフィルタリングを有効にします。

<resources>
  <resource>
    <directory>src/main/resources</directory>
    <filtering>true</filtering>
  </resource>
</resources>

次に、リソース プラグインの実行を追加します。フィルター ファイルと出力ディレクトリが異なることに注意してください。

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-resources-plugin</artifactId>
  <executions>
    <execution>
      <id>default-resources</id>
      <phase>process-resources</phase>
      <goals>
        <goal>resources</goal>
      </goals>
      <configuration>
        <outputDirectory>${project.build.outputDirectory}/dev</outputDirectory>
        <filters>
          <filter>${basedir}/src/main/filters/dev.properties</filter>
        </filters>
      </configuration>
    </execution>
    <execution>
      <id>prod</id>
      <phase>process-resources</phase>
      <goals>
        <goal>resources</goal>
      </goals>
      <configuration>
        <outputDirectory>${project.build.outputDirectory}/prod</outputDirectory>
        <filters>
          <filter>${basedir}/src/main/filters/prod.properties</filter>
        </filters>
      </configuration>
    </execution>
  </executions>
</plugin>

最後に、jar プラグインです。分類子と入力ディレクトリに注意してください:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-jar-plugin</artifactId>
  <executions>
    <execution>
      <id>default-jar</id>
      <phase>package</phase>
      <goals>
        <goal>jar</goal>
      </goals>
      <configuration>
        <classifier>dev</classifier>
        <classesDirectory>${project.build.outputDirectory}/dev</classesDirectory>
      </configuration>
    </execution>
    <execution>
      <id>jar-prod</id>
      <phase>package</phase>
      <goals>
        <goal>jar</goal>
      </goals>
      <configuration>
        <classifier>prod</classifier>
        <classesDirectory>${project.build.outputDirectory}/prod</classesDirectory>
      </configuration>
    </execution>
  </executions>
</plugin>

実行mvn clean installすると、アーティファクトで適切にフィルタリングされたリソースが生成され、必要に応じdevprod分類子が作成されます。

この例では、開発バージョンのdefault-resourcesおよびの実行 ID を使用しました。default-jarこれがないと、ビルド時に未分類の jar アーティファクトも取得されます。

于 2012-09-07T15:45:28.950 に答える
3

参考までに、バージョン番号を入力して、カスタム フィルターをサポートするバージョンがあることを確認してください。Maven 3では、たとえば、このように設定しました。バージョンがないと機能しませんでした。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.6</version>
    ...
</plugin>
于 2013-07-04T01:55:40.743 に答える