2

我的任务是维护一个大型 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} 的末尾(有没有办法打印 ${techsas 的值.home} 来自 NetBeans?)

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

4

2 回答 2

1

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

请参阅:如何在 Ubuntu 上将环境变量传递给 Netbeans Makefile?

于 2012-07-17T05:07:22.187 回答
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 存储库中的构建脚本应该是正确的)对我来说仍然是一个谜——但至少我暂时有一个解决方法。

于 2012-07-17T12:55:01.287 回答