maven-assembly-plugin学習

5398 ワード

前回の記事では、mavenのメカニズムに慣れていない場合、自分の必要なパッケージフォーマットを実現するためにmaven ant taskを使用してmaven+antで非標準パッケージを実現することについて議論しましたが、ここではmavenでパッケージタスクに対して提供されるアライメントプラグイン:assembly pluginについて説明します.    なお、上記(初学maven(4)-maven ant taskを使用して非標準パッケージを実現する)の項目を例に挙げると、パッケージするプログラムは以下の通りである.    demo1    |____lib    |_____demo1.jar    |_____*****.jar    |_____*****.jar    |____config    |_____*****.properties    |_____*****.xml    |____log    |_____*****.log    |____run.bat    |____run.sh    Javaプロジェクトと同様に、ファイル構造は次のとおりです.    demo1    |____src/main/java    |____src/main/config    |____src/main/bin    |____src/main/resources    |____src/main/assemble    |____src/test/java    |____src/test/resources    |____target    |____pom.xml    src/main/assembleディレクトリとantのないbuildファイルを追加した以外は、src/main/javaがjavaコードをドロップします.src/main/resourcesの下に*.propertiesファイルが置かれています.このリソースファイルはjarにパッケージされており、コンテンツのパッケージ後に変更する必要はありません.src/main/configは、インストール実行前に一時的に変更する必要がある標準log 4 j.xmlを下に置きます.src/main/binの下に実行可能ファイルを配置します.    assembly pluginの使い方は比較的簡単で、主に:1.pom.xmlを修正する    pom.xmlでは、次のように設定されています.    
<build>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <!-- not append assembly id in release file name -->
                    <appendAssemblyId>false</appendAssemblyId>
                    <descriptors>
                        <descriptor>src/main/assemble/package.xml</descriptor>
                    </descriptors>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
 
 
    ここでmaven-assembly-pluginのmaven-assembly-pluginはこのプラグインの標準的な名前で、maven 2.0.*にデフォルトのバージョンは    appendAssemblyIdプロパティは、生成されたパッケージファイルのファイル名にassembly idが含まれているかどうかを制御します.        descriptorプロパティはmaven-assembly-pluginのプロファイルを指定します.もちろん、私が設定したのはsrc/main/assemble/package.xmlです.複数の使用を許可し、機能が強く、もちろん使い方も複雑で、簡単な状況では十分です.    executionの設定は、maven-assembly-pluginを標準のmavenパッケージに継承するため、maven-packageを実行するときにmaven-assembly-pluginの操作を実行し、必要なカスタムパッケージを実現します.2. assemble descriptor file    私のsrc/main/assemble/package.xmlの内容は以下の通りです.
<assembly xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/assembly-1.0.0.xsd">
    <id>package</id>
    <formats>
        <format>zip</format>
    </formats>
    <includeBaseDirectory>true</includeBaseDirectory>
    <fileSets>
        <fileSet>
            <directory>src/main/bin</directory>
            <outputDirectory>/</outputDirectory>
        </fileSet>
        <fileSet>
            <directory>src/main/config</directory>
            <outputDirectory>config</outputDirectory>
        </fileSet>
    </fileSets>
    <dependencySets>
        <dependencySet>
            <outputDirectory>lib</outputDirectory>
            <scope>runtime</scope>
        </dependencySet>
    </dependencySets>
</assembly>
 
 
 
 
        詳細な文法は説明しません.公式ガイドを参照してください.非常に詳細な説明があります.Assembly Descriptor Format reference    簡単に説明します.    1) format    format=zipパッケージの最終ファイルフォーマットをzipに設定.    サポートされる他のフォーマットには、gz、tar、tar.gz、tar.bz 2があります.    2)  fileset    
<fileSet>
     <directory>src/main/bin</directory>
     <outputDirectory>/</outputDirectory>
</fileSet>
 
    
  
      src/main/binディレクトリの下のファイルをルートディレクトリ(/)の下にパッケージします.
<fileSet>
     <directory>src/main/config</directory>
     <outputDirectory>config</outputDirectory>
</fileSet>
 
 
 
 
    src/main/configディレクトリのファイルをconfigにパッケージします.    3) dependencySets
<dependencySet>
        <outputDirectory>lib</outputDirectory>
        <scope>runtime</scope>
</dependencySet>
 
    
    scopeがruntimeの依存パッケージをlibディレクトリにパッケージします.    まとめて、pom.xmlにmaven-assembly-pluginを導入し、assemble descriptor fileをオンデマンドで設定し、最後にeclipseでRun As->Maven packageを実行すると、targetディレクトリの下に*****.zipファイルが表示され、フォーマットと要求が完全に一致します.