蚂蚁部署问题

时间:2009-08-26 15:14:26

标签: java eclipse ant

我正在做一个春季项目。我使用ant来部署应用程序和STS(基于eclipse)IDE来开发。我设置了CATALINA_HOME环境变量

 echo $CATALINA_HOME
/home/username/springsource/apache-tomcat

当我从IDE运行deploy ant任务时,它会部署到

下的文件夹中
/home/username/workspace/myproject/${env.CATALINA_HOME}/webapp

但不是

/home/username/springsource/apache-tomcat/webapp  

你知道任何修复吗?

我的build.properties文件

src.dir=src
web.dir=web
build.dir=${web.dir}/WEB-INF/classes
name=myproject
appserver.home=${env.CATALINA_HOME}
deploy.path=${appserver.home}/webapps
appserver.lib=${appserver.home}/lib

和build.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<project name="kervan" basedir="." default="usage">
<property environment="env"/>
<property file="build.properties"/>
<path id="cp">
<fileset dir="${web.dir}/WEB-INF/lib">
<include name="*.jar"/>
</fileset>
<fileset dir="${appserver.lib}">
<include name="servlet-api.jar"/>
</fileset>
<pathelement path="${build.dir}"/>
</path>
<target name="usage">
<echo message=""/>
<echo message="${name} build file"/>
<echo message="-----------------------------------"/>
<echo message=""/>
<echo message="Available targets are:"/>
<echo message=""/>
<echo message="build --> Build the application"/>
<echo message="deploy --> Deploy application as a WAR file"/>
<echo message=""/>
</target>
<target name="build"  description="Compile main source tree java files">
<mkdir dir="${build.dir}"/>
<javac destdir="${build.dir}" source="1.6" target="1.6"
debug="true" deprecation="false" optimize="false"
failonerror="true">
<src path="${src.dir}"/>
<classpath refid="cp"/>
</javac>
</target>
<target name="deploy" depends="build" description="Deploy application as a WAR file">
<war destfile="${name}.war"
webxml="${web.dir}/WEB-INF/web.xml">
<fileset dir="${web.dir}">
<include name="**/*.*"/>
</fileset>
</war>
<copy todir="${deploy.path}" overwrite="true">
<fileset dir=".">
<include name="*.war"/>
</fileset>
</copy>
</target>
</project>

7 个答案:

答案 0 :(得分:3)

尝试在两条<property>行之后添加以下内容:

<echo message="CATALINA_HOME=${env.CATALINA_HOME}" />

看看它输出了什么。如果它实际上输出了正确的值,那么可能会发生一些奇怪的事情。如果它输出文字字符串

CATALINA_HOME=${env.CATALINA_HOME}

然后以某种方式你的蚂蚁脚本没有拿起环境变量。

请注意,为系统设置环境变量时,只有在设置变量后启动的应用程序才会识别新变量。只有在从同一命​​令行会话启动正在启动的应用程序时,才会识别从命令行设置的变量。

答案 1 :(得分:0)

您的环境中是否设置了CATALINA_HOME

e.g。视窗

echo %CATALINA_HOME%

Linux的

echo $CATALINA_HOME

您可以随时对属性文件中的值进行硬编码,如果它没有得到正确解析但是在您的环境中提供,那么它应该可以正常工作。

这里的论坛讨论了同样的问题:

http://www.nabble.com/%3Cproperty-environment%3D%E2%80%9Denv%E2%80%9D%3E-doesn%27t-pick-up-an-environment-variable-td21481164.html

答案 2 :(得分:0)

从eclipse运行时,我不相信环境会传递给ant。您必须在eclipse中的构建文件配置中指定要传递给ant的每个环境变量(和值)。

答案 3 :(得分:0)

如果您是在Eclipse或类似Eclipse的环境中运行,那么Eclipse可能会有点奇怪,这取决于您启动它的方式,它的启动脚本不会使您的环境本机可用于您的IDE内部Ant建立过程。

使用基于Eclipse的Ant构建,我不得不手动设置环境。所以对我来说,我右键点击我的项目&amp;转到“属性”。然后我点击“建设者”部分。我选择“Ant Builder”并单击“编辑...”。在此部分下方有一个“环境”选项卡,您可以在其中指定环境变量及其对应的值。

即使您没有像我一样使用Eclipse,也可以在构建属性中查找,并且应该能够找到一种方法来指定环境变量并使它们可用于构建过程。

答案 4 :(得分:0)

如果您在全局

中设置环境变量
  

的/ etc /环境

这就是Ubuntu中的问题。 Ant不会从这里选择环境变量。 但终端中的 echo $ CATALINA_HOME工作正常。我面临同样的问题。

  • 在.bashrc中设置您的环境可能会解决您的问题。

答案 5 :(得分:0)

我最近遇到了类似的问题。

问题出在CATALINA_HOME环境变量中:我需要用反斜杠(“/”)关闭路径:

$ export CATALINA_HOME = / home / username / springsource / apache-tomcat /

修复后我可以使用ant部署应用程序。

答案 6 :(得分:0)

请确保用/结束你的路径,它将解决你的问题。

示例:导出JAVA_HOME = / opt / java / 而不是:export JAVA_HOME = / opt / java