Java 奇怪的Maven空指针
我从一开始问起就修改了这个问题。请参阅更新1部分,特别是最后的更新2部分。 我正在构建一个具有很多依赖项的大型JavaFX应用程序。我正在使用IntelliJ来完成这项工作,现在正处于部署阶段。我正在使用IntelliJ自己关于工件的教程来构建一个可执行jar。教程可以在中看到 我已经构建了我的可执行jar,它正在正常工作,但有一点需要注意: 我必须为可执行jar文件手动模拟IntelliJ项目的目录结构,以找到程序正常运行所需的资源 这就是我的问题所在:IntelliJ不应该在工件中包含这些文件,这样它就可以自己运行了吗 我在IntelliJ中的目录结构如下所示:Java 奇怪的Maven空指针,java,intellij-idea,maven-3,executable-jar,artifact,Java,Intellij Idea,Maven 3,Executable Jar,Artifact,我从一开始问起就修改了这个问题。请参阅更新1部分,特别是最后的更新2部分。 我正在构建一个具有很多依赖项的大型JavaFX应用程序。我正在使用IntelliJ来完成这项工作,现在正处于部署阶段。我正在使用IntelliJ自己关于工件的教程来构建一个可执行jar。教程可以在中看到 我已经构建了我的可执行jar,它正在正常工作,但有一点需要注意: 我必须为可执行jar文件手动模拟IntelliJ项目的目录结构,以找到程序正常运行所需的资源 这就是我的问题所在:IntelliJ不应该在工件中包含这些文
Project root
.idea
.out
.src
.main
.java
.com
.myCompany
.package-with-classes1
.class1 ... N
.package-with-classes2
.class1 ... N
.package-with-files
.file1.someExtension
.file2.someExtension
.other-package-classes
.and-so-on
当我在projectstructure-Artifacts-Output布局下构建工件时,我会手动添加目录结构,如上图所示,然后将文件放在它们所属的位置
根据我上面的问题,我希望这些文件自动包含在可执行jar文件中
更新1:将Maven添加到项目中
由于这个原因,我现在已经在我的项目中实现了Maven。我在pom.xml文件中添加了很多外部依赖项,如下所示:
<dependency>
<groupId>some.group.id</groupId>
<artifactId>some-artifact-id</artifactId>
<scope>system</scope>
<version>1.0.0</version>
<systemPath>${basedir}\path\to\jar\jarfile.jar</systemPath
</dependency>
some.group.id
某个工件id
系统
1.0.0
${basedir}\path\to\jar\jarfile.jar第一个问题写得很好。做得好!我非常确定IntelliJ应该允许您明确地说明部署的工件中包含哪些资源。你在问题中链接的指南是否没有指导你这样做?@RannLifshitz不确定你是否在讽刺,但……谢谢。我会再看一遍教程。我从不讽刺新的SO用户。这里有太多苛刻的用户,他们的行为如此恶劣,我个人很讨厌。我真的很好奇如何通过IntelliJ的部署来打包您的资源(我更熟悉Maven是如何做到这一点的)。我希望指南能说明这是如何做到的,但事实并非如此——IntelliJ似乎应该更新他们的指南。@RannLifshitz在这种情况下,我道歉!谢谢你迄今为止的帮助。是的,这在教程中似乎并不明显,但我会仔细检查,以确保我没有错过任何东西。
<dependency>
<groupId>some.group.id</groupId>
<artifactId>some-artifact-id</artifactId>
<version>some.version.number</version>
</dependency>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>com.myCompany.myMainClass</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>