当前位置: 首页 > 知识库问答 >
问题:

如何使用maven shade构建jar和war

狄安歌
2023-03-14

我在一个使用openrdf的项目中,我需要shade插件来转换我的服务条目。我想同时建立一个战争和一个罐子,因为这两种用法都是可能的。但是,我不能让shade插件同时生成带阴影的jar和带阴影的WAR-Shade只在属性中定义的包类型上调用,并且将jar插件绑定到包阶段以便在war旁边创建一个jar,结果会产生一个无阴影的jar。我怎样才能同时创建一个有阴影的罐子和一个有阴影的战争呢?

共有1个答案

丌官晔
2023-03-14

如果“shaded war”指的只是将所有依赖项打包到web-inf/lib中的常规war,那么您可以单独使用maven-war-plugin并使用jar作为打包类型。这样shade插件就可以正常工作了。而.war将由插件构建。

下面是pom.xml。下面是一个工作示例。

<?xml version="1.0" encoding="UTF-8"?>
<project 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/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>so.test</groupId>
    <artifactId>stackoverflow-test2</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>2.1</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <finalName>${project.build.finalName}-fatjar</finalName>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.6</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>war</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>5.14.9</version>
        </dependency>
    </dependencies>


</project>
 类似资料:
  • 问题内容: 我正在使用gradle构建的开源项目。我想生成一个(project)-sources.jar文件,可以将其加载到我的IDE(IntelliJ IDEA)中并通过该项目进行调试。我知道如何生成文件(如果可以生成的话)。 我浏览了该项目可用的gradle任务,但没有一个可以生成source jar文件。 为该项目生成源jar文件的最简单方法是什么? 将源添加到包含已编译的类文件的jar文件

  • 问题内容: 我正在尝试构建一个依赖于下载的外部jar的可执行jar程序。在我的项目中,我将它们包含在构建路径中,并且可以在eclipse中运行和调试。 当我尝试将其导出到jar中时,我可以运行该程序,但是当我尝试按下包含来自外部jar的函数调用和类的按钮时,则无法执行。我已经编辑了环境变量(Windows XP)CLASSPATH,以包括所有外部jar的路径,但是它不起作用。 需要注意的一点是,我

  • 我正在与一个开源项目一起工作,这个项目是用Gradle构建的。我想生成一个(project)-sources.jar文件,我可以将该文件加载到我的IDE(IntelliJ IDEA)中,并通过项目进行调试。我知道如何加载文件,如果我可以生成它。 我查看了该项目的可用gradle任务,没有一个生成sources jar文件。 为这个项目生成sources jar文件的最简单的方法是什么? 将源代码添

  • 问题内容: 我有一个文件夹结构 当我运行以下命令“ jar cvf asd.jar * .class”时,它将为jar提供所有类文件。但是没有生成文件夹结构。所有的类文件都必须在“ com.cdy / ws”下,但是所有的类都在同一级别的META-INF中。谁能告诉我生成包结构的命令是什么? 谢谢 问题答案: 您需要在文件的 根目录 开始创建JAR 。 因此,例如: 假定包含该目录。 仅供参考,如

  • 我正在使用SBT(在IntelliJ IDEA中)构建一个简单的Scala项目。 我想知道什么是最简单的方法来建立一个Uber JAR文件(又名胖JAR,超级JAR)。 我当前使用的是SBT,但当我将JAR文件提交到Apache Spark时,我得到以下错误: 线程“main”java.lang.SecurityException中的异常:清单主属性的签名文件摘要无效 或在编译期间出现此错误: j

  • 我在图书馆工作,需要一些依赖。为了便于部署,我想创建一个包含所有内容的JAR文件,包括依赖项。 我已经尝试过sbt汇编——这是可行的,但由于法律原因,这可能是不可取的,因此我正在寻找一种解决方案,其中生成的JAR文件包含原始JAR文件,并且类路径条目包含在清单中。MF的设置使得客户端类可以将这个“嵌套JAR文件”添加到它们的类路径中。 这样的事情可能吗?sbt one jar几乎可以满足我的需求,