【问题标题】:Combine multiple module jars into a single one将多个模块 jar 合并为一个
【发布时间】:2018-08-07 03:10:10
【问题描述】:

现在我有一个 Maven 项目,这是我的项目结构:

| sound(parent)
| -- sound-service (sub-module)
| -- sound-start (sub-module)

soundpom 中。我有以下内容:

<modules>
    <module>sound-service</module>
    <module>sound-start</module>
</modules>

依次点击clean-compile-package后,IDEA IntelliJ帮我为每个子模块创建了两个JAR包。但我想要的是一个包含所有依赖项和 JAR 库的单个 JAR 文件。我还在父根的 pom 文件中添加了以下 maven 插件,但我仍然无法获得一个包含整个内容的 JAR。

<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
    <archive>
        <manifest>
            <mainClass>com.yct.Application</mainClass>
        </manifest>
    </archive>
    <descriptorRefs>
        <descriptorRef>jar-with-dependencies</descriptorRef>
    </descriptorRefs>
</configuration>
<executions>
    <execution>
        <id>make-assembly</id> 
        <phase>package</phase> 
        <goals>
            <goal>single</goal>
        </goals>
    </execution>
</executions>
</plugin>

我错过了什么吗?我是否还需要在soundpom中添加一些其他依赖项?

【问题讨论】:

  • 您正在寻找“胖罐”解决方案 - 我认为,并不是真正玩过“模块”

标签: java maven


【解决方案1】:

jar-with-dependencies 可以帮助您构建带有 依赖项jar,而不是 模块

不要使用&lt;modules&gt;&lt;/modules&gt;,而是尝试使用&lt;dependencies&gt;&lt;/dependencies&gt;

【讨论】:

    【解决方案2】:

    我认为在 Maven 中组合单 jar 应用程序的推荐方法是使用 shade 插件。在我的一个项目中,我是这样配置的:

    <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>2.4.3</version>
            <configuration>
                <!-- see http://maven.apache.org/plugins/maven-shade-plugin/examples/attached-artifact.html -->
                <shadedArtifactAttached>true</shadedArtifactAttached>
                <shadedClassifierName>standalone</shadedClassifierName>
                <transformers>
                    <transformer
                        implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                        <mainClass>main.class.name.here</mainClass>
                    </transformer>
                    <transformer
                        implementation="com.github.edwgiz.mavenShadePlugin.log4j2CacheTransformer.PluginsCacheFileTransformer" />
                    <transformer
                        implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                        <resource>META-INF/spring.handlers</resource>
                    </transformer>
                    <transformer
                        implementation="org.springframework.boot.maven.PropertiesMergingResourceTransformer">
                        <resource>META-INF/spring.factories</resource>
                    </transformer>
                    <transformer
                        implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                        <resource>META-INF/spring.schemas</resource>
                    </transformer>
                    <transformer
                        implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
                </transformers>
            </configuration>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                </execution>
            </executions>
            <dependencies>
                <dependency>
                    <groupId>com.github.edwgiz</groupId>
                    <artifactId>maven-shade-plugin.log4j2-cachefile-transformer</artifactId>
                    <version>2.8.1</version>
                </dependency>
                <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <version>1.2.5.RELEASE</version>
                </dependency>
            </dependencies>
        </plugin>
    

    【讨论】:

      猜你喜欢
      • 2022-01-12
      • 2010-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-24
      • 2010-12-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多