NetBeans / Maven / Ant构建脚本错误 - 环境变量(Linux)

时间:2012-07-17 05:00:43

标签: linux maven netbeans ant

我的任务是维护一个大型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}?)

无论如何,非常感谢任何帮助 - 我现在有点失落。

2 个答案:

答案 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回购中的构建脚本应该是正确的)对我来说仍然是一个谜 - 但至少我暂时还有一个解决方法。