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



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

当我在netbeans中构建时,它(默认的ant构建)将我的依赖库粘贴到一个名为dist/lib/commons-math3.6.1.jar的目录中,我的jar在:dist/MyJar.jar中创建

java -jar MyJar.jar

它会找到我的附属库。然而,当我用竹子构建时,我注意到有一件事不同,那就是我的库没有被复制到dist/lib/。但由于它们在我项目的根目录中,这不是问题,我只是继续从/libs/到/dist/lib/重新复制它们,然后我尝试"java-jarMyJar.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选项来运行文件,就像在构建服务器上一样,当在竹服务器上从ant脚本构建时,我需要使用vanilla java来运行这些文件。

这是一个很难弄清楚的问题。基本上,copylibstask.jar需要对ant on竹可用,但由于构建服务器上没有安装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可以再次执行。

相关内容

  • 没有找到相关文章

最新更新