2016-04-22 119 views
0

我有一个用Java作为“Maven项目”(项目上的小图标具有程式化的“m”)编写的Java应用程序。我想将这个实用程序和它所依赖的库打包为一个jar文件;我想要jar文件包含必要的运行时库,因此我不必将它们分开打包。在我运行构建时,我将在项目目录下创建'dist'和'lib'目录,并且(因为我已经在项目属性中设置了主类),我会在清单文件中指定它。这一切都没有发生;该项目在IDE下构建并运行良好,但它创建的jar只包含实用程序特定的类,没有库类,该清单没有写入我的主类,并且库类不在jar中。从Netbeans/Maven项目创建桌面jar

是因为这是一个Maven项目而不是默认的Netbeans Java项目?我如何在Netbeans中使用Maven项目完成此任务?

-

加入Maven的组装插件的建议后,从输出控制台“清理并生成”看起来是这样的:

cd C:\Users\rcook\Documents\NetBeansProjects\OlbUserLoad; "JAVA_HOME=C:\\Program Files\\Java\\jdk1.7.0_07" M2_HOME=C:\\devTools\\apache-maven cmd /c "\"\"C:\\devTools\\apache-maven\\bin\\mvn.bat\" -DskipTests=true 
-Dmaven.ext.class.path=\"C:\\Program Files\\NetBeans 8.1\\java\\maven-nblib\\netbeans-eventspy.jar\" -Dfile.encoding=UTF-8 clean install\"" Scanning for projects... 

------------------------------------------------------------------------ Building OlbUserLoad 1.0-SNAPSHOT 
------------------------------------------------------------------------ 

--- maven-clean-plugin:2.4.1:clean (default-clean) @ OlbUserLoad --- Deleting C:\Users\rcook\Documents\NetBeansProjects\OlbUserLoad\target 

--- maven-resources-plugin:2.5:resources (default-resources) @ OlbUserLoad --- [debug] execute contextualize Using 'UTF-8' encoding to copy filtered resources. Copying 1 resource Copying 0 resource 

--- maven-compiler-plugin:2.0.2:compile (default-compile) @ OlbUserLoad --- Compiling 1 source file to C:\Users\rcook\Documents\NetBeansProjects\OlbUserLoad\target\classes 

--- maven-resources-plugin:2.5:testResources (default-testResources) @ OlbUserLoad --- [debug] execute contextualize Using 'UTF-8' encoding to copy filtered resources. skip non existing resourceDirectory C:\Users\rcook\Documents\NetBeansProjects\OlbUserLoad\src\test\resources 

--- maven-compiler-plugin:2.0.2:testCompile (default-testCompile) @ OlbUserLoad --- Nothing to compile - all classes are up to date 

--- maven-surefire-plugin:2.10:test (default-test) @ OlbUserLoad --- Tests are skipped. 

--- maven-jar-plugin:2.3.2:jar (default-jar) @ OlbUserLoad --- Building jar: C:\Users\rcook\Documents\NetBeansProjects\OlbUserLoad\target\OlbUserLoad-1.0-SNAPSHOT.jar 

--- maven-install-plugin:2.3.1:install (default-install) @ OlbUserLoad --- Installing C:\Users\rcook\Documents\NetBeansProjects\OlbUserLoad\target\OlbUserLoad-1.0-SNAPSHOT.jar to C:\Users\rcook\.m2\repository\com\accesspoint\OlbUserLoad\1.0-SNAPSHOT\OlbUserLoad-1.0-SNAPSHOT.jar Installing C:\Users\rcook\Documents\NetBeansProjects\OlbUserLoad\pom.xml to C:\Users\rcook\.m2\repository\com\accesspoint\OlbUserLoad\1.0-SNAPSHOT\OlbUserLoad-1.0-SNAPSHOT.pom 
------------------------------------------------------------------------ BUILD SUCCESS 
------------------------------------------------------------------------ Total time: 2.155s Finished at: Fri Apr 22 10:15:28 EDT 2016 Final Memory: 17M/152M 
------------------------------------------------------------------------ 

我希望帮助我们图还有什么是缺少的。

回答

2

将此插件包含在您的.pom文件中。这是为了告诉Maven组装你的应用程序的依赖关系。

之后,在Netbeans中构建您的项目,您将看到具有依赖关系的jar。

<plugin> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <configuration> 
     <descriptorRefs> 
      <descriptorRef>jar-with-dependencies</descriptorRef> 
     </descriptorRefs> 
     <archive> 
      <manifest> 
       <mainClass>Your Main Class</mainClass> 
      </manifest> 
     </archive> 
    </configuration> 
    <executions> 
     <execution> 
      <id>make-assembly</id> 
      <phase>package</phase> 
      <goals>       
       <goal>single</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

参考:Creating a Java Maven Project in NetBeans IDE 7.4

+0

我不似乎有一个“运行Maven安装” - 我需要在POM东西来启用? – arcy

+0

@arcy对不起,Netbeans没有,那可能是Eclipse。看到我对.pom文件的更新,你实际上需要将执行添加到pom文件中。之后,只需使用Build按钮构建项目,就会在目标文件夹中看到一个具有依赖关系的jar。 –

+0

谢谢,我发现在另一篇文章中,虽然我还发现通过右键单击项目并选择“自定义 - 目标”来运行“clean compile assembly:single”。我注意到生成按钮现在生成了Great Big Jar,但它具有略微不同的字节数,具体取决于它是使用按钮还是使用我刚刚提到的自定义命令行构建的。你有什么想法会有什么不同? – arcy