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

问题描述 投票:1回答:1

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

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

java -jar MyJar.jar

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

[email protected]:~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脚本构建时。

java ant bamboo
1个回答
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可以再次执行。

© www.soinside.com 2019 - 2024. All rights reserved.