2011-04-26 55 views
0

我想根據OS替換現有jar的路徑。 現在我正在用一個名爲「build.start.properties」的文本文件保存所有類似於這樣的庫
/gwt/X/2.1.0/gwt-servlet.jar
/gwt/X/2.1.0 /gwt-user.jar /gwt/X/2.1.0/gwt-dev.jar
/gwt/X/2.1.0/gwt-soyc-vis.jar /log4j/X/1.2.15/log4j -1.2.15.jar /GWT_LOG/X/3.0.3/gwt-log-3.0.3.jar /GWT_MATH/X/2.1/gwt-math-2.1.jar /GWT_MATH/X/2.1/gwt- math-server-2.1.jar /GWT_Commons_Logging/X/0.3/GWT-commons-logging/gwt-commons-logging-0.3.jar
/GWT_Commons_Logging/X/0.3/GWT-commons-logging/gwt-commons-logging -service-0.3.jar在不同操作系統上工作時更新jar的相對路徑

和裝載他們用低於目標

<loadfile property="jars.list.property" srcfile="mybuild/build.start.properties"> 
     <filterchain> 
      <expandproperties /> 
      <striplinecomments> 
       <comment value="#" /> 
      </striplinecomments> 
      <tokenfilter> 
       <ignoreblank /> 
      </tokenfilter> 
      <prefixlines prefix="," /> 
      <striplinebreaks /> 
     </filterchain> 
    </loadfile> 
    <filelist id="build.libs" dir="" files="${jars.list.property}" /> 

    <pathconvert targetos="unix" property="build_unix.libs" refid="build.libs"> 

     <map from="C:" to="${unix.xenv}" /> 
     <map from="" to="${unix.xenv}" /> 
    </pathconvert> 
    <pathconvert targetos="windows" property="build_windows.libs" refid="build.libs"> 
     <map from="C:" to="${windows.xenv}" /> 
     <map from="" to="${windows.xenv}" /> 
    </pathconvert> 
    <path id="build.classpath.id"> 
     <pathelement path="${build_windows.libs}" /> 
     <pathelement path="${build_unix.libs}" /> 
    </path> 
    <echo message="Build Libraries classpath: ${toString:build.classpath.id}" /> 
</target> 

從上述目標build.classpath.id到classptah看起來像 /gwt/X/2.1.0/gwt-servlet.jar: /gwt/X/2.1.0/gwt-user.jar:/gwt/X/2.1.0/gwt-dev.jar:/gwt/X/2.1.0/gwt-soyc-vis.jar:/log4j/ X/1.2.15/log4j的-1.2.15.jar:/GWT_LOG/X/3.0.3/gwt-log-3.0.3.jar:GWT_MATH/X/2.1/GWT-數學2.1.jar:/ GWT_MATH/X/2.1/GWT-數學服務器2.1.jar:/GWT_Commons_Logging/X/0.3/GWT-commons-logging/gwt-commons-logging-0.3.jar:/GWT_Commons_Logging/X/0.3/GWT-commons-logging/ gwt-commons-logging-service-0.3.jar

當我在UNIX上工作,我不得不從PIC文件「build.start.properties」只罐子名和更新路徑這樣

/WebContent/WEB_INF/lib/gwt-servlet.jar:/WebContent/ WEB_INF/lib目錄/ GWT-user.jar:/WebContent/WEB_INF/lib/gwt-dev.jar:/WebContent/WEB_INF/lib/gwt-soyc-vis.jar:/WebContent/WEB_INF/lib/log4j-1.2.15的.jar:/WebContent/WEB_INF/lib/gwt-log-3.0.3.jar:/WebContent/WEB_INF/lib/gwt-math-2.1.jar:/WebContent/WEB_INF/lib/gwt-math-server-2.1。罐子:/WebContent/WEB_INF/lib/gwt-commons-logging-0.3.jar:/WebContent/WEB_INF/lib/gwt-commons-logging-service-0.3.jar

回答

0

使用條件

<condition property="isWindows"> 
<os family="windows" /> 
</condition> 
<condition property="isUnix"> 
    <os family="unix" /> 
</condition> 

On the targets then u can use 

<target name="path_if_unix" if="isUnix"> 
    <map from="C:" to="${unix.xenv}" /> 
    <map from="" to="${unix.xenv}" /> 
</target> 
+0

這不適用於我,因爲在UNIX相對路徑可能會根據用戶更改。 – Jagan 2011-04-26 18:07:36

+0

因爲你不僅要知道操作系統,還需要知道用戶 – 2011-04-26 20:04:22

+0

你怎麼知道你想要哪個用戶? – 2011-04-26 20:04:56