2015-10-26 129 views
1

如何從Ant中的另一個類路徑變量中排除包含在一個類路徑變量中的jar包?我有一個myclasspath1屬性,其中包含我要包含的所有jar和myclasspath2以及其他jar的列表。我想獲得classpath3,其中包含classpath1中不在classpath2中的所有jar。以下是我想出了一個罐子:排除Ant中的jar flom類路徑

<path id="my.classpath1"> 
    <pathelement path="${myClasspath1}"/> 
</path> 

<!-- at the end I want to get all jars concatenated into a string --> 
<pathconvert pathsep="," property="my.classpath3" refid="my.classpath1"> 
    <mapper type="flatten"/> 
    <map from="excluded.jar" to="" /> 
</pathconvert> 

如何排除包括在myclasspath2,而不是所有的罐子?

+1

你見過[this SO post](http://stackoverflow.com/questions/10205592/exclude-jar-from-ant-classpath)嗎? –

回答

1

我想提醒你的classpath管理應該是明確的,你可以讓他們,例如:

<path id="my.classpath1"> 
    <fileset dir="${lib.dir}"> 
    <includes name="*.jar"/> 
    <excludes name="foo.jar"/> 
    </fileset> 
</path> 

<path id="my.classpath2"> 
    <fileset dir="${lib.dir}"> 
    <includes name="*.jar"/> 
    <excludes name="bar.jar"/> 
    </fileset> 
</path> 

<path id="my.classpath3"> 
    <fileset dir="${lib.dir}"> 
    <includes name="foo.jar"/> 
    <includes name="bar.jar"/> 
    </fileset> 
</path> 

類路徑管理是一種痛苦....最好的解決辦法是使用像依賴管理apache ivy。還有Maven的ANT任務可用。兩者都會自動從Maven Central下載jar,並且能夠爲你管理你的類路徑。