1

配布可能なZIPアーカイブをパッケージ化するためにMavenアセンブリプラグインを使用しています。ただし、別のアセンブリの結果であるjar-with-dependenciesを最終アーカイブに含めたいと思います。これどうやってするの?おそらく手動でJARを含めることができると思いますが、カスタムアセンブリがJARアセンブリの後に実行されるようにするにはどうすればよいですか?

4

1 に答える 1

2

そのためにマルチモジュールプロジェクトを使用できます。

parent
  |- ...
  |- jar-with-dependencies-module
  |- final-zip-module

モジュールではjar-with-dependencies、すべての依存関係を使用して「uber-jar」をアセンブルします。POMのビルド構成は次のようになります。

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-assembly-plugin</artifactId>
      <version>2.3</version>
      <configuration>
        <descriptorRefs>
          <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
      </configuration>
      <executions>
        <execution>
          <phase>package</phase>
          <goals>
            <goal>single</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

で、を依存関係としてfinal-zip-module追加jar-with-dependenciesし、ZIPファイルのアセンブリ記述子で使用できます。POMは次のようになります。

<project>
  ...

  <dependencies>
    <dependency>
      <groupId>com.example</groupId>
      <artifactId>jar-with-dependencies-module</artifactId>
      <version>1.0.0-SNAPSHOT</version>
      <classifier>jar-with-dependencies</classifier>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>2.3</version>
        <configuration>
          <appendAssemblyId>false</appendAssemblyId>
          <descriptors>
            <descriptor>src/main/assembly/assembly.xml</descriptor>
          </descriptors>
        </configuration>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

また、アセンブリ記述子は次のようになります。

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">

  <id>final-assembly</id>
  <formats>
    <format>zip</format>
  </formats>

  <dependencySets>
    <!-- Include the jar-with-dependencies -->
    <dependencySet>
      <includes>
        <include>com.example:jar-with-dependencies-module:*:jar-with-dependencies</include>
      </includes>
      <useProjectArtifact>false</useProjectArtifact>
      <!-- Don't use transitive dependencies since they are already included in the jar -->
      <useTransitiveDependencies>false</useTransitiveDependencies>
    </dependencySet>t>
  </dependencySets>
</assembly>

に依存しているためjar-with-dependency-module、mavenはfinal-zip-moduleuber-jarがビルドされた後に常にビルドします。

于 2012-11-03T10:14:47.400 に答える