3

これが他の場所でカバーされている場合はお詫び申し上げます。この特定の些細な質問に対する答えが見つからなかったのではないかと思います。

4つのサブプロジェクトを(バンドルとして)参照およびビルドするMavenプロジェクトがあります。サブプロジェクト間の依存関係を正しく設定し、最終的に4つの異なる.jarファイルをビルドしてビルドしました。

  • parentproj / sub1 / target / sub1.jar
  • parentproj / sub2 / target / sub2.jar
  • parentproj / sub3 / target / sub3.jar
  • parentproj / sub4 / target / sub4.jar

私の質問は、メインの.POMファイルからビルドするときに、4つのjarすべてが「/ parentproj / target / ...」に配置されるようにmuparentビルドを設定するにはどうすればよいですか?

追加の質問は、xxxx-ALL.jar(これらの4つのバンドルの内容をマージする)も構築するにはどうすればよいですか?

4

2 に答える 2

3

Mavenアセンブリプラグインを「dir」形式で使用してすべてをフォルダーに配置し、「jar」形式を使用してそれらをjarにグループ化します。

詳細:

  1. Mavenプロジェクトから始めます(サブプロジェクトと呼びましょう)
  2. <module>タグを使用してすべてのサブプロジェクトを集約する新しいMavenプロジェクト(pomパッケージ)を作成します
  3. アセンブリプラグインをpom.xmlファイルに入れます(以下を参照)
  4. 正しいassembly.xmlファイルを作成します(以下を参照)

pom.xmlファイル:

<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.2.1</version>
    <executions>
        <execution>
                <id>distro-assembly</id>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
            <configuration>
                <appendAssemblyId>false</appendAssemblyId>
                    <finalName>somefolder</finalName>
                    <attach>false</attach>
                    <descriptors>
                    <descriptor>assembly.xml</descriptor>
                    </descriptors>
                <phase>package</phase>
            </configuration>
        </execution>
    </executions>
</plugin>

assembly.xmlファイル:

<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>SomeName</id>
<formats>
    <format>dir</format>
</formats>
<includeBaseDirectory>true</includeBaseDirectory>
<baseDirectory></baseDirectory>

<fileSets>
    <fileSet>
        <directory>appfiles</directory>
        <includes>
            <include>**</include>
        </includes>
        <outputDirectory>.</outputDirectory>
    </fileSet>
</fileSets>

<moduleSets>
    <moduleSet>
        <!-- useAllReactorProjects must be false if the assembly's run on the project with the module list -->
        <useAllReactorProjects>false</useAllReactorProjects>
        <includeSubModules>false</includeSubModules>

        <binaries>
            <includeDependencies>true</includeDependencies>
            <outputDirectory>bundle</outputDirectory>
            <unpack>false</unpack>
        </binaries>
    </moduleSet>
</moduleSets>

于 2012-05-06T17:02:41.393 に答える
1

追加の質問は、xxxx-ALL.jar(これらの4つのバンドルの内容をマージする)も構築するにはどうすればよいですか?

Mavenシェードプラグインを使用してuber-jar(プロジェクトのすべての依存関係を持つjar)を作成できます。これらを依存関係として使用して別のプロジェクトを作成し、このuber-jarを生成するだけです。

于 2012-05-06T18:40:36.820 に答える