复制ant classpath jar来构建文件夹

时间:2014-12-24 06:19:14

标签: java ant build

这可能是一个重复的问题,但没有找到解决办法。

我在开发环境下为我的新项目制作了一个build.xml。

<project name="env-agent-config-util" basedir=".">
    <property environment="env"/>
    <property name="src.dir"     value="src"/>  
    <property name="build.dir"   value="build"/>
    <property name="classes.dir" value="${build.dir}/classes"/>
    <property name="jar.dir"     value="${build.dir}/UI/jar"/>
    <property name="main-class" value="org.env.agent.config.util.ProxySettings"/>
    <property name="env.src.dir" location="${env.ENV_SRC}/integration/java/server/conf"/>
    <property name="env.lib.dir" location="${env.ENV_JAVA_DEV}/lib/dir" />
    <import file="${evn.src.dir}/build.xml" optional="false" />

    <target name="clean">
        <delete dir="${classes.dir}"/>
    </target>

    <target name="compile" depends="init-common" >
        <mkdir dir="${classes.dir}"/>
        <javac  destdir="${classes.dir}">
            <src path="${src.dir}"/>
            <src path="${env.src.dir}"/>
            <classpath refid="env.utils.jars"/>
            <classpath refid="third.party.jars"/>
            <classpath>
                <pathelement location="${env.lib.dir}/integration/common/env-integration-common-crypto.jar" />
            </classpath>
        </javac>
        <copy todir="${build.dir}/UI/lib" flatten="true"> 
            <path>
               <pathelement path="${java.class.path}"/>
            </path>
        <!--    <fileset dir="${env.lib.dir}" />    -->
        </copy>
       </target>
       <target name="jar" depends="compile">
           <mkdir dir="${jar.dir}"/>
           <jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${classes.dir}">
           <manifest>
              <attribute name="Main-Class" value="${main-class}"/>
           </manifest>
        </jar>
     </target>
     <target name="run" depends="jar,clean">
        <echo message="All Runnable, Jar are placed into the Build/UI Folder."/>
        <!-- <java jar="${jar.dir}/${ant.project.name}.jar" fork="true"/> -->
     </target>


</project>

如您所见,我参考了3条路径:

  • env.util.jars
  • third.party.jars
  • $ {env.lib.dir} /integration/common/env-integration-common-crypto.jar

根据当前声明,即复制标记下的$ {java.class.path},它会复制文件但更改了jar名称。我不想这样做。

我需要将属于这些路径变量的所有jar(及其正确的名称)复制到build / UI / lib文件夹。

我尝试使用fileset但它只需要当前的项目变量。

至少我如何为这些路径变量创建属性变量?

请帮助......

0 个答案:

没有答案