web-dev-qa-db-ja.com

Maven「ターゲット」ディレクトリのZipアーカイブを作成する

「ターゲット」ディレクトリ($ {project.build.directory)のZipアーカイブを作成したい。 maven-Assembly-pluginを使用すると、このような単純なタスクのやり過ぎのように思えます(そして少し複雑です-なぜそのようなタスクに別のファイル、アセンブリ記述子を使用する必要があるのでしょうか) maven-Zip-pluginhttp://repo1.maven.org/maven2 リポジトリ内。

入力はありますか?

33
Yaneeve

bin 事前定義されたアセンブリ記述子がニーズに合わない場合、3つのオプションがあります。

  1. Maven-Assembly-pluginの使用-AssemblyプラグインはZipプラグインが実行していたことすべてを実行できるため、maven-Zip-pluginは決して出てきませんでした。詳細は、 MNG-224 を参照してください。
  2. Maven-antrun-plugin(および場合によってはZipをアタッチするbuild-helper-plugin)の使用- here の例があります(これは最後にAssemblyプラグインよりも詳細に見えます)。
  3. 独自のプラグインを作成する-アセンブリプラグインを持っているのに、なぜこれを行うのでしょうか。

個人的には、次のZip.xml記述子でmaven-Assembly-pluginを使用するだけです。

<Assembly xmlns="http://maven.Apache.org/plugins/maven-Assembly-plugin/Assembly/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.Apache.org/plugins/maven-Assembly-plugin/Assembly/1.1.0 http://maven.Apache.org/xsd/Assembly-1.1.0.xsd">
  <id>bin</id>
  <baseDirectory>/</baseDirectory>
  <formats>
    <format>Zip</format>
  </formats>
  <fileSets>
    <fileSet>
      <directory>${project.build.directory}</directory>
    </fileSet>
  </fileSets>
</Assembly>

そして、あなたのPOMで:

<plugin>
  <artifactId>maven-Assembly-plugin</artifactId>
  <version>2.6</version>
  <configuration>
    <descriptors>
      <descriptor>src/main/Assembly/Zip.xml</descriptor>
    </descriptors>
  </configuration>
  <executions>
    <execution>
      <id>make-Assembly</id> <!-- this is used for inheritance merges -->
      <phase>package</phase> <!-- append to the packaging phase. -->
      <goals>
        <goal>single</goal> <!-- goals == mojos -->
      </goals>
    </execution>
  </executions>
</plugin>
56
Pascal Thivent

生成された.Zipファイルに「特別な」ニーズがない場合は、事前定義されたMavenアセンブリ記述子のいずれかを使用できます。事前定義されたアセンブリ記述子を使用すると、独自のアセンブリ記述子を提供しなくても、特定のアセンブリをすばやく簡単に作成できます。 bin事前定義済み記述子を使用するとします。次に、POMのpluginsセクションのbuildセクションに、以下を追加するだけです。

<plugin>
  <artifactId>maven-Assembly-plugin</artifactId>
  <version>2.6</version>
  <configuration>
    <descriptorRefs>
      <descriptorRef>bin</descriptorRef>
    </descriptorRefs>
  </configuration>
</plugin>

もちろん、Mavenの場合と同様に、既定の構成以外のことを行う場合は、独自の構成を作成する必要があります。この場合は、独自のアセンブリ記述子を意味します。

事前定義された記述子のリストは here で文書化されています。

14
RTBarnard