maven - 如何使用 Maven 组合 jar?

标签 maven maven-3

以下代码片段创建 2 个 JAR:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.4</version>
    <executions>
        <execution>
            <id>build-dependency</id>
            <phase>compile</phase>
            <goals>
                <goal>jar</goal>
            </goals>
            <configuration>
                <classifier>dependency</classifier>
                <classesDirectory>${project.build.directory}\dependency</classesDirectory>
                <includes>
                    <include>${dependancyInclude}</include>
                </includes>
            </configuration>
        </execution>
        <execution>
            <phase>compile</phase>
            <goals>
                <goal>jar</goal>
            </goals>
            <configuration>
                <classifier>module</classifier>
                <classesDirectory>${project.build.directory}\classes</classesDirectory>
            </configuration>
        </execution>
    </executions>
</plugin>

我想使用程序集插件将这两个 JAR 合并为一个,目前我有以下内容:

<plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.2</version>
    <executions>
        <!-- Combine all the JARs in the /target folder into one JAR -->
        <execution>
            <id>make-assembly</id>
            <phase>compile</phase>
            <goals>
                <goal>single</goal>
            </goals>
            <configuration>
                <attach>true</attach>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
                <finalName>${project.artifactId}-${project.version}</finalName>
                <appendAssemblyId>true</appendAssemblyId>
            </configuration>
        </execution>
    </executions>
</plugin>

目前,由程序集插件创建的最终 JAR 中仅包含两个 JAR 之一。

最佳答案

如果我理解正确的话,你实际上是想将这些 jar 文件合并成一个大的 jar 文件。这可以使用 maven-shade-plugin(而不是 maven- assembly-plugin)来实现。

例如:

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>2.0</version>
        <configuration>
           <!-- Put your configuration here, if you need any extra settings.
                (You should be okay with the defaults). -->
        </configuration>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  ...
</project>

关于maven - 如何使用 Maven 组合 jar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15635052/

相关文章:

maven - 根据jar文件自动创建pom文件依赖

java - Gson.jar 不引用 Maven 依赖项,即使它已由 spring-boot 管理

android - 缺少artifactcom.google.android.gms :google-play-services:jar in pom. xml

java - 无法让 maven-war-plugin 排除 jaxb jar

maven-3 - 自定义Maven打包,不包含传递依赖项

java - 如何包含pom项目中的所有模块

java - 如何在 Google App Engine 中创建和托管 SOAP Web 服务?

java - 如果两者都包含存储库,则 Maven 存储库优先?

java - 线程 "main"java.lang.AssertionError 中的异常

java - 如何创建文件并将其放入与 Maven 的 war 中?