我的任务是维护一个大型Java / C ++项目,使用NetBeans(7.0.1)和Maven / Ant进行构建,所有项目都在CentOS 6上运行。
我目前遇到构建脚本的问题。
脚本是Maven,但是调用了一个ant任务:
<!-- create jar launch script -->
<echo file="${techsas.home}/run-exe-jar"
message="#!/bin/bash${line.separator}java -jar -Dlog4j.configuration=file:///${TECHSAS_HOME}/log4j.xml bin/${project.artifactId}-${project.version}.jar" append="false">
</echo>
问题在于第一行。运行该脚本将导致此错误:
BUILD ERROR
--------------------------------------------------
An Ant BuildException has occured: java.io.FileNotFoundException: /home/techsas/NetbeansProjects/<snip>/${TECHSAS_HOME}/run-exe-jar (No such file or director)
$ TECHSAS_HOME是一个有效的环境变量 - 正在运行
echo $TECHSAS_HOME
命令行中的将给出正确的值。
我是NetBeans和Maven的新手 - 我的在线研究没有提出任何解决方案。我想我可能在这里犯了一些基本错误。
NetBeans似乎无法解析$ {TECHSAS_HOME}变量 - 虽然我不知道为什么它首先将它附加到$ {techsas.home}的末尾(有没有办法打印它的值?来自NetBeans的$ {techsas.home}?)
无论如何,非常感谢任何帮助 - 我现在有点失落。
答案 0 :(得分:1)
如果你正在使用Gnome(例如在Ubuntu上),你需要在~/.gnomerc
中设置环境变量,以便从桌面启动的应用程序可以看到它们。
请参阅:How do I pass an environment variable to a Netbeans Makefile on Ubuntu?
答案 1 :(得分:0)
好吧,我把它解决了。那种。
在根pom中,项目的主目录定义如下:
<techsas.home>${TECHSAS_HOME}</techsas.home>
即,将环境变量$ TECHSAS_HOME复制到Maven变量techsas.home。
但是,由于某种原因,$ {TECHSAS_HOME}没有解析 - 即使变量设置正确(通过.gnomerc以及.bashrc - 感谢@therefromhere)。 $ {env.TECHSAS_HOME}也不起作用,据我所知,这是正确的方法(例如http://docs.codehaus.org/display/MAVENUSER/MavenPropertiesGuide)
将其更改为实际路径 - 即
<techsas.home>/usr/local/techsas</techsas.home>
让它工作正常。为什么它的表现如此(AFAIK回购中的构建脚本应该是正确的)对我来说仍然是一个谜 - 但至少我暂时还有一个解决方法。