Gok Demir
Gok Demir

Reputation: 1402

ant deploy problem

I am working on a spring project. I use ant to deploy application and STS (eclipse based) IDE to develop. I set the CATALINA_HOME environment variable

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

When I run the deploy ant task from IDE it deploys to a folder under

/home/username/workspace/myproject/${env.CATALINA_HOME}/webapp

but not

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

Do you know any fix?

My build.properties file

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

and build.xml file

<?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>

Upvotes: 1

Views: 7536

Answers (7)

Gaurav
Gaurav

Reputation: 69

Please make sure you end your path with a / and it shall solve your problem.

example: export JAVA_HOME=/opt/java/ instead of: export JAVA_HOME=/opt/java

Upvotes: 0

rfm
rfm

Reputation: 1

I recently suffered a similar issue.

The problem was in the CATALINA_HOME environment variable: I needed to close the path with a backslash ("/"):

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

After fixing that I could deploy the application with ant.

Upvotes: 0

arulraj.net
arulraj.net

Reputation: 4817

if you are set your environmental variable in global

/etc/environment

thats the problem in Ubuntu. Ant does not pick the environment variable from here. But the echo $CATALINA_HOME works fine in terminal. I am facing the same problem.

  • set your environment in .bashrc may fix your problem.

Upvotes: 0

digitaljoel
digitaljoel

Reputation: 26574

When run from eclipse, I don't believe the environment is passed to ant. You will have to specify each of the environment variables (and the values) that you want passed to ant in the configuration of the build file within eclipse.

Upvotes: 0

Brent Writes Code
Brent Writes Code

Reputation: 19613

If you're running from within Eclipse or an Eclipse-like environment, Eclipse can be kind of weird in that depending on how you launch it, it's startup scripts won't make your environment natively available to your in-IDE Ant build process.

With my Eclipse-based Ant build, I had to manually set the environment. So for me, I right click on my project & go to "Properties". Then I click on the "Builders" section. I select my "Ant Builder" and click "Edit...". Under this section there's an "Environment" tab where you can specify environment variables and their corresponding values.

Even if you're not using Eclipse exactly like I was, poke around in the build properties and you should be able to find a way to specify environment variables and make them available to the build process.

Upvotes: 0

pjp
pjp

Reputation: 17629

Is CATALINA_HOME set in your environment?

e.g. Windows

echo %CATALINA_HOME%

Linux

echo $CATALINA_HOME

You could always hardcode the value in your properties file if it's not getting resolved correctly but provided it's in your environment then it should work.

The forum here discusses the same problem:

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

Upvotes: 0

Adam Batkin
Adam Batkin

Reputation: 52994

Try putting the following after the two <property> lines:

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

and see what it outputs. If it in fact outputs the correct value, then something strange may be happening. If it outputs the literal string

CATALINA_HOME=${env.CATALINA_HOME}

then somehow your ant script hasn't picked up the environment variable.

Note that when you set an environment variable for your system, only applications launched AFTER the variable is set will recognize the new variable. And variables set from the command line will only be recognized if the application being launched is being launched from that same command line session.

Upvotes: 3

Related Questions