2009-08-26 87 views
1

我正在開發一個彈簧項目。我使用ant來部署應用程序和STS(基於eclipse的)IDE來開發。我設置了CATALINA_HOME環境變量螞蟻部署問題

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

當我從IDE運行部署螞蟻任務,其部署到一個文件夾

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

回答

0

如果您從Eclipse或類似Eclipse的環境中運行,Eclipse可能有點奇怪,因爲根據啓動腳本的方式,它的啓動腳本不會讓您的環境本身可用於您的in-IDE Ant構建過程。

隨着我的基於Eclipse的Ant構建,我不得不手動設置環境。所以對於我,我右鍵點擊我的項目&轉到「屬性」。然後我點擊「建造者」部分。我選擇我的「Ant Builder」,然後單擊「編輯...」。在本節中,有一個「環境」選項卡,您可以在其中指定環境變量及其對應的值。

即使您沒有像我一樣使用Eclipse,也可以在構建屬性中查找,並且應該能夠找到指定環境變量並使其可用於構建過程的方法。

+1

布倫特,正如你所說,我從建設者部分配置它,它只有當我把它硬編碼到CATALINA_HOME =/home/username/springsource/apache-tomcat時才起作用。我首先從預配置的變量列表中將CATALINA_HOME分配給$ {env_var:CATALINA_HOME},但沒有奏效。 –

+0

@郭:是的,這很煩人。您可以嘗試使用一些內部Eclipse變量,例如$ {workspace_loc},如果您指向工作區下的某些內容以使其不必是絕對路徑,但除此之外,我認爲您唯一的選擇是混淆您如何啓動Eclipse以便獲取您的實際環境設置。你在運行什麼操作系統? –

+0

我正在運行Ubuntu Jaunty。無論如何感謝您的解決方案。 –

3

嘗試把兩個<property>線後如下:

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

,看看它輸出。如果它實際上輸出正確的值,那麼可能會發生一些奇怪的事情。如果它輸出文字字符串

CATALINA_HOME=${env.CATALINA_HOME} 

那麼你的螞蟻腳本還沒有拿起環境變量。

請注意,當您爲系統設置環境變量時,只有在設置變量後啓動的應用程序纔會識別新變量。如果正在啓動的應用程序是從同一命令行會話啓動的,則只能從命令行設置變量。

+0

螞蟻回聲檢查已設置的好方法。 – pjp

0

從eclipse運行時,我不相信環境傳遞給螞蟻。您必須在eclipse中的配置文件中指定要傳遞給ant的每個環境變量(和值)。

0

,如果你設置你的環境變量在全球

的/ etc /環境

那是在Ubuntu的問題。 Ant不會從這裏選擇環境變量。 但是echo $ CATALINA_HOME在終端中正常工作。我面臨同樣的問題。

  • 在.bashrc中設置您的環境可能會解決您的問題。
+0

現在問題解決了..我用「sudo ant build」。現在我刪除了sudo它的工作正常。 –

0

我最近遭遇了類似的問題。

的問題是在CATALINA_HOME環境變量:我需要用反斜槓( 「/」)關閉路徑:

$出口CATALINA_HOME = /家庭/用戶名/ SpringSource的/ Apache的Tomcat的/

修復後,我可以用ant部署應用程序。

0

請確保你用/結束你的路徑,它將解決你的問題。

例如:出口JAVA_HOME = /選擇/ JAVA/ 代替:出口JAVA_HOME = /選擇/ JAVA