首页 文章

使用maven程序集插件创建包含胖jar的ZIP文件(jar-with-dependencies)

提问于
浏览
2

我正在使用maven assembly-plugin,我想创建一个ZIP文件,其中包含一个胖jar(jar-with-dependencies) . 我无法使用 mvn package 在一次运行中创建此项 . 我可以取消注释 descriptor 的配置或取消注释 jar-with-dependencies 部分 .

pom.xmlbuild 部分如下:

<build>
    <plugins>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <descriptors>
                    <descriptor>src/main/assembly/dist.xml</descriptor>
                </descriptors>
                <finalName>sample-documentum-downloader</finalName>
            </configuration>

            <executions>
                <execution>
                    <id>jar-with-dependencies</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                    <configuration>
                        <finalName>${project.artifactId}</finalName>
                        <appendAssemblyId>false</appendAssemblyId>
                        <descriptorRefs>
                            <descriptorRef>jar-with-dependencies</descriptorRef>
                        </descriptorRefs>
                        <archive>
                            <manifest>
                                <addClasspath>true</addClasspath>
                                <mainClass>com.foo.DownloadDocuments</mainClass>
                            </manifest>
                        </archive>
                    </configuration>
                </execution>

                <execution>
                    <id>assemble-all</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

并且 dist.xml 是:

<assembly>
<id>dist</id>
<formats>
    <format>zip</format>
</formats>
<files>
    <file>
        <source>target/${project.artifactId}.jar</source>
        <outputDirectory>/</outputDirectory>
    </file>
    <file>
        <source>data/input/docId.txt</source>
        <outputDirectory>data/input/</outputDirectory>
    </file>
    <file>
        <source>data/export/exported_files_will_be_created_here.txt</source>
        <outputDirectory>data/export/</outputDirectory>
    </file>
    <file>
        <source>src/main/resources/dfc.properties</source>
        <outputDirectory>/</outputDirectory>
    </file>
    <file>
        <source>src/main/resources/dfc.keystore</source>
        <outputDirectory>/</outputDirectory>
    </file>

</files>
<fileSets>
    <fileSet>
        <directory>${project.basedir}</directory>
        <includes>
            <include>*.cmd</include>
            <include>README.pdf</include>
        </includes>
        <useDefaultExcludes>true</useDefaultExcludes>
    </fileSet>
</fileSets>

我如何重组以在一次运行中创建包含远JAR的ZIP .

感谢您的支持 .

2 回答

  • 1

    问题是您将 <configuration> 元素声明为插件的全局元素 . 这意味着所有执行都将继承该配置: assemble-all 但也是 jar-with-dependencies . 因此,继承的 <descriptors> 可能正在弄乱 <descriptorRefs> .

    您需要将 <configuration> 元素移动到特定的 assemble-all 执行,就像执行 jar-with-dependencies 一样 .

  • 2

    感谢Tunaki,我的 build 部分现在看起来像这样:

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <executions>
                    <execution>
                        <id>jar-with-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                        <configuration>
                            <finalName>${project.artifactId}</finalName>
                            <appendAssemblyId>false</appendAssemblyId>
                            <descriptorRefs>
                                <descriptorRef>jar-with-dependencies</descriptorRef>
                            </descriptorRefs>
                            <archive>
                                <manifest>
                                    <addClasspath>true</addClasspath>
                                    <mainClass>com.foo.DownloadDocuments</mainClass>
                                </manifest>
                            </archive>
                        </configuration>
                    </execution>
    
                    <execution>
                        <id>assemble-all</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                        <configuration>
                            <descriptors>
                                <descriptor>src/main/assembly/dist.xml</descriptor>
                            </descriptors>
                            <finalName>sample-documentum-downloader</finalName>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    
    </build>
    

相关问题