2011-10-20 8 views
39

ジタルアーカイブとしてロールアップされた任意のフォルダー/ファイル構造からなるアーティファクトを管理する必要があると仮定します。 Mavenでこれを達成する方法は、「Mavenの方法」に最も適した方法ではわかりません。アドホックジップアーティファクトを作成するためのMavenのベストプラクティス

"zip"パッケージタイプはありません。つまり、リソースフォルダにあるものを取り出し、圧縮してリポジトリにインストール/展開するだけで、Mavenには一般的なライフサイクルが存在しないということですか?

私は、黄金の道から迷子になるという明らかな不利益を被ることは望まないので、各オプションがどのように私の必要条件を満たすかを評価して、オプションを探しています。 。 。

+0

ここでは「クラシファイア」なしで行うことができます:https://stackoverflow.com/questions/25078028/how-to-create-zip-target-instead-of-jar-in-maven – Adam

答えて

52

あなたのzipファイルにどのような分類子を使用するかを決定します。これは、引数として、sampleとしましょう。あなたのプロジェクトで

はファイルassembly/sample.xml

を作成するには、このようなものでassembly/sample.xmlに入力します。

<?xml version="1.0" encoding="UTF-8"?> 
<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>sample</id> 
    <formats> 
    <format>zip</format> 
    </formats> 
    <fileSets> 
    <fileSet> 
     <outputDirectory>/</outputDirectory> 
     <directory>some/directory/in/your/project</directory> 
    </fileSet> 
    </fileSets> 
    <!-- use this section if you want to package dependencies --> 
    <dependencySets> 
    <dependencySet> 
     <outputDirectory>lib</outputDirectory> 
     <excludes> 
     <exclude>*:pom</exclude> 
     </excludes> 
     <useStrictFiltering>true</useStrictFiltering> 
     <useProjectArtifact>false</useProjectArtifact> 
     <scope>runtime</scope> 
    </dependencySet> 
    </dependencySets> 
</assembly> 

は、それが作成する必要があり、結果としてあなたのポンポンのbuildセクション

<build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <executions> 
      <execution> 
      <id>create-distribution</id> 
      <phase>package</phase> 
      <goals> 
       <goal>single</goal> 
      </goals> 
      <configuration> 
       <descriptors> 
       <descriptor>assembly/sample.xml</descriptor> 
       </descriptors> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 

にこれを追加し、 you-project-name-VERSION-sample.zipをインストールしてください。

私はあなたがSonatypeのMavenの本からアセンブリの章を読むことをお勧め: https://books.sonatype.com/mvnref-book/reference/assemblies.html

また、組立フォーマット仕様をお読みください。http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html

+2

しかし、どのようなpackagin gタイプはpomで使用するのが最も適切でしょうか?または、Javaソースがない場合でも、デフォルト(java)を使用するだけですか? @William。 – William

+10

プロジェクトに関連付けられているJavaコードがない場合は、 pom

0

はこのような何かを持つアセンブリ/ sample.xmlにに入力します。

<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>install</id> 
    <baseDirectory>/</baseDirectory> 
    <formats> 
    <format>zip</format> 
</formats> 
<fileSets> 
    <fileSet> 
    <includes> 
     <include>README*</include> 
     <include>*.sh</include> 
    </includes> 
    </fileSet> 
    <fileSet> 
    <directory>target/classes/</directory> 
    <outputDirectory>resources</outputDirectory> 
    <includes> 
     <include>*.properties</include> 
     <include>*.xml</include> 
    </includes> 
    <lineEnding>dos</lineEnding> 
    </fileSet> 
    <!-- 
    <fileSet> 
    <directory>target/</directory> 
    <outputDirectory>lib</outputDirectory> 
    <includes> 
     <include>*.jar</include> 
    </includes> 
    <lineEnding>dos</lineEnding> 
    </fileSet> 
    --> 
</fileSets> 
<!-- use this section if you want to package dependencies --> 
    <dependencySets> 
    <dependencySet> 
     <outputDirectory>lib</outputDirectory> 
     <excludes> 
     <exclude>*:pom</exclude> 
     </excludes> 
     <useStrictFiltering>true</useStrictFiltering> 
     <useProjectArtifact>true</useProjectArtifact> 
     <scope>runtime</scope> 
    </dependencySet> 
    </dependencySets> 
</assembly> 

以下のコードをpom.xmlファイルに追加します。 xxxx.zip -lib/の.jar -resources/ .xmlファイル/プロパティ -readme -start:mvn package -P dev -Dmaven.test.skip

として

<plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <configuration> 
       <descriptor>assembly/sample.xml</descriptor> 
      </configuration> 
      <executions> 
       <execution> 
        <phase>package</phase> 
        <goals> 
         <goal>single</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 

実行コマンドには、zipファイルを作成します。 sh

+0

を使用してください。追加の情報は持ちません。 – lpratlong

関連する問題