引用Maven jar文件的jar文件不一致

时间:2019-11-04 18:56:14

标签: java git maven jar

我有一个Swing应用程序,该应用程序使用Maven工件math.geom2d:javaGeom:0.11.1中的类。为了在GitHub版本中创建jar文件,我使用了经过修改的“ fatJar” build.gradle任务,因此jarm文件中 included 包含了geom2d类。对于我在Maven上的应用程序的jar文件,我没有包含geom2d类,因此这些类不会显示在该jar文件中,但它们被称为依赖项。

奇怪的是,在我的计算机上,这个(较小的)jar文件始终可以正常运行,所以我认为一切都很好,即使很奇怪!我决定在我妻子的机器上尝试一下,但由于NoClassDefFoundError而崩溃。我以为可能是因为她没有安装Maven ...尝试安装它,但没什么不同!帮助将不胜感激!

这是我的应用程序在Maven上的pom.xml:

<project 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>com.jpaulmorrison</groupId>
<artifactId>drawfbp</artifactId>
<version>2.18.4</version>
<name>DrawFBP</name>
<description>Diagramming Tool for Flow-Based Programming</description>
<url>https://github.com/jpaulm/drawfbp</url>
<licenses>
<license>
<name>GNU Lesser General Public License, Version 3.0</name>
<url>https://www.gnu.org/licenses/lgpl-3.0.txt</url>
</license>
</licenses>
<developers>
<developer>
<id>jpaulmorr</id>
<name>
John Paul Rodker Morrison (Software architect/developer)
</name>
<email>jpaulmorr@gmail.com</email>
</developer>
<developer>
<id>bobcorrick</id>
<name>Bob Corrick (Software architect/developer)</name>
<email>bobcorrick@outlook.com</email>
</developer>
</developers>
<scm>
<connection>scm:git:https://github.com/jpaulm.git</connection>
<developerConnection>scm:git:https://github.com/jpaulm.git</developerConnection>
<url>https://github.com/jpaulm.git</url>
</scm>
<dependencies>
<dependency>
<groupId>math.geom2d</groupId>
<artifactId>javaGeom</artifactId>
<version>0.11.1</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>

谢谢@ samvel1024!现在,我对发生的事情有了更好的了解:

  • 没有geom2d类的jar文件可以运行,因为我在类路径中有geom2d-不再了!

  • 我使用build.gradle中的任务创建了一个fatJar,但是uploadArchives创建了一个新的jar文件,它不是“胖”!

  • 因此,我想将fatJar任务添加到我的uploadArchives函数中,

OR

  • 禁止上载存档中的“罐子”任务,这样就不会弄乱我已经拥有的“胖子”罐子!我已经尝试过“ jar.enabled =布尔变量”,但是我不能将其设置为“ false” ...

使用明智的语言,这两个选项中的任何一个都应该很容易,但我都无法使用!帮助将不胜感激!

2 个答案:

答案 0 :(得分:0)

如果要使用maven来构建jar,则需要像在gradle build def中一样包含所有依赖项。

如果您希望jar可以通过java -jar my.jar运行,则还需要使用一些构建插件来为您执行此操作。

您可以找到更多详细信息here

答案 1 :(得分:0)

原来是如此简单!原来是上面的第二个选择:

“ ......在上载存档中取消执行” jar“任务,这样就不会弄乱我已经拥有的” fat“ jar!...”

在命令行中将-x jar添加到uploadArchives!

无论如何,谢谢@ samvel1024!