2012-07-17 53 views
2

我的任务是使用NetBeans(7.0.1)和Maven/Ant来构建大型Java/C++项目,所有这些项目都运行在CentOS 6上。NetBeans/Maven/Ant构建脚本错误 - 环境变量(Linux)

我目前遇到了构建脚本的问题。

剧本是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

你正在运行哪个linux发行版? – 2012-07-17 05:05:52

+0

CentOS 6.2,x86_64 – Caligari 2012-07-17 05:06:51

+0

这是否使用Gnome或其他? – 2012-07-17 05:12:37

回答

1

如果您使用的是Gnome(例如在Ubuntu上),您需要在​​中设置环境变量,使它们对从桌面启动的应用程序可见。

参见:How do I pass an environment variable to a Netbeans Makefile on Ubuntu?

+0

嗯,看起来应该是这样的解决方案..它的确运行Gnome(2.28.2)。我使用所需的export语句创建了〜/ .gnomerc,并重新启动了,但仍然没有任何内容 - 这似乎也许没有被执行,在终端运行echo $ TECHSAS_HOME将不会返回任何结果(并且我仍然在NetBeans中得到相同的错误) – Caligari 2012-07-17 06:07:12

+0

@Caligari也许试试'〜/。配置文件“或这些其他文件之一? http://superuser.com/questions/19044/how-do-i-set-an-environmental-variable-for-a-gnome-session – 2012-07-18 04:41:30

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