我正在使用Intellij Java 2016.2.2和Maven创建一个非常简单的Java控制台应用程序。
我想添加一个外部库,所以我在Maven中添加了我的依赖项,如下所示:
<dependency>
<groupId>jline</groupId>
<artifactId>jline</artifactId>
<version>2.12</version>
</dependency>
当我在IDE中运行它时,它运行良好,但在外部控制台中却没有运行(我遇到以下错误: java.lang.NoClassDefFoundError )。
我检查了一下,由于某种原因,外部JAR未添加到我刚刚生成的JAR中。我还在“文件->项目结构”中尝试了很多东西,但仍然无法正常工作…
我只想构建包含依赖关系的JAR,因此可以使用以下命令在控制台中运行应用程序:
java -jar myproject.jar
我怎样才能做到这一点?谢谢你的帮助!
我终于设法用Intellij Java生成了这个JAR,这是我的工作方式:
编辑
更好的方法是在pom.xml文件中添加以下几行:
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>your.MainClass</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>
</plugins>
</build>
然后使用“ clean”和“ package” maven命令。
上面的最后3个步骤(关于MANIFEST.MF)似乎仍然是必需的。
我下载了一个Maven项目,可以运行来构建目标helloworld。jar,它依赖于多个第三方运行时jar。但是,我不知道如何使用Maven将这些第三方JAR自动复制到特定目录中。查看pom。xml,我发现了以下语句。因此,基本上我希望将第三方JAR复制到。要做到这一点,我应该使用哪个maven插件/短语/目标?有人能给我看一个可运行的maven语法吗?谢谢
如果我有一个OSGI Bundle jar中嵌套了依赖项jar,我是否需要在导入包清单中列出这些类以便使用它们?我不这么认为。 另外,我如何将这些依赖项jar添加到我的包中。我只是把它们放在根文件夹里吗?我是否需要向清单文件添加任何内容才能使用这些依赖关系?
如何将这个插件添加为依赖项和插件?我如何将此用作依赖项? 谢谢
问题内容: 有没有一种方法可以强制maven(2.0.9)将所有依赖项包含在单个jar文件中? 我有一个构建到单个jar文件中的项目。我希望将依赖项中的类也复制到jar中。 更新:我知道我不能只在jar文件中包含jar文件。我正在寻找一种方法来解压缩指定为依赖项的jar,并将类文件打包到我的jar中。 问题答案: 你可以使用带有描述符的插件来执行此操作。这是我们之一的相关块,它可以完成此任务:
根据我的理解,包含/排除只是白名单/黑名单,所以我不能显式地强制包含一些没有包含在实际依赖列表中的内容。 为了获得更多的上下文,我有一个JAR依赖项,它包含一个资源,我只希望它包含在我的shade工件中,但是在类路径上使用该JAR会导致错误。 明确地说,我希望在一个调用中生成一个带有附加依赖项的阴影jar,以及一个没有附加依赖项的普通jar。