如何将NetBeans ant build移植到构建服务器(Atlassian Bamboo)

时间:2016-07-23 03:07:18

标签: java ant bamboo

我想让我的NetBeans项目用竹子构建。其中大部分似乎都在工作,但是当我在NetBeans中构建时,我无法启动我的项目。

当我构建netbeans时,它(通过默认的ant build)将我的依赖库粘贴到名为dist / lib / commons-math3-3.6.1.jar的目录中,我的jar创建于:dist / MyJar.jar。我可以通过输入

来运行我的jar
java -jar MyJar.jar

它会找到我的依赖库。然而,当我用竹子建造时,我注意到有一件事是不同的,我的库没有被复制到dist / lib /。但是因为它们在我的项目的根目录中它不是问题我只需继续将它们从我的/ libs /重新复制到/ dist / lib /然后我尝试“java -jar MyJar.jar”命令但是我得到了这个错误:

james@build.mycompany.com:~dist/$ java -jar MyJar.jar 
Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/apache/commons/math3/stat/descriptive/moment/StandardDeviation
    at readnthvalue.App.<clinit>(App.java:26)
    at readnthvalue.MainFrame.<init>(MainFrame.java:31)
    at readnthvalue.MainFrame.lambda$main$0(MainFrame.java:365)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.math3.stat.descriptive.moment.StandardDeviation
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 17 more

非常感谢任何有蚂蚁和亚特兰大竹子知识的人的想法或建议。

我应该提到md5sum不同于工作罐和用竹子制作的罐子。

我使用命令:ant clean jar从命令行构建

更新8-04-2017

我注意到在竹子上我得到了这个:

build   04-Aug-2017 14:02:51    -do-jar-jar:
build   04-Aug-2017 14:02:51    [j2seproject1:jar] Building jar: /home/filtec/bamboo-home/xml-data/build-dir/AUR-ATP-JOB1/dist/auratec-helper.jar
build   04-Aug-2017 14:02:51         [echo] To run this application from the command line without Ant, try:
build   04-Aug-2017 14:02:51         [echo] /home/filtec/jdk1.8.0_65/jre/bin/java -cp /home/filtec/bamboo-home/xml-data/build-dir/AUR-ATP-JOB1/libs/jfreechart-1.0.19.jar:/home/filtec/bamboo-home/xml-data/build-dir/AUR-ATP-JOB1/libs/jcommon-1.0.23.jar:/home/filtec/bamboo-home/xml-data/build-dir/AUR-ATP-JOB1/libs/commons-math3-3.6.1.jar:/home/filtec/bamboo-home/xml-data/build-dir/AUR-ATP-JOB1/libs/jSerialComm-1.3.11.jar:/home/filtec/bamboo-home/xml-data/build-dir/AUR-ATP-JOB1/dist/auratec-helper.jar filtec.auratec.MainFrame

但是在NetBeans中我得到了这个输出:

Building jar: /home/james/NetBeansProjects/auratec-helper/dist/auratec-helper.jar
To run this application from the command line without Ant, try:
java -jar "/home/james/NetBeansProjects/auratec-helper/dist/auratec-helper.jar"

所以我想我的新更新问题是为什么在竹子服务器上的构建与我的工作站上的行为不同。什么是未复制的依赖jar,为什么我能够使用-jar选项来运行文件,因为在构建服务器上我需要使用vanilla java在从Bamboo服务器上的ant脚本构建时运行。

1 个答案:

答案 0 :(得分:0)

这很痛苦。基本上,copylibstask.jar需要可用于竹子上的ant,但由于NetBeans未安装在构建服务器上,我们需要手动引用它。我已将副本放入/libs/org-netbeans-modules-java-j2seproject-copylibstask.jar,并在project.properties文件中引用它。

# this is needed for the ant build
libs.CopyLibs.classpath=libs/org-netbeans-modules-java-j2seproject-copylibstask.jar

库正在复制,jar可以再次执行。