Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
请帮助我解决我的Ant+;常春藤+;Java构建/依赖性问题_Java_Eclipse_Ant_Ivy_Build Dependencies - Fatal编程技术网

请帮助我解决我的Ant+;常春藤+;Java构建/依赖性问题

请帮助我解决我的Ant+;常春藤+;Java构建/依赖性问题,java,eclipse,ant,ivy,build-dependencies,Java,Eclipse,Ant,Ivy,Build Dependencies,我可以让Eclipse导出一个独立的JAR文件,这很好。但是,当我尝试将build.xml文件与Ant一起使用时,我得到了大约100个错误,因为大量引用无法解析 <!-- Deletes the existing build, docs and dist directory--> <target name="clean"> <delete dir="${build.dir}" /> <delete dir="${docs.dir}

我可以让Eclipse导出一个独立的JAR文件,这很好。但是,当我尝试将build.xml文件与Ant一起使用时,我得到了大约100个错误,因为大量引用无法解析

  <!-- Deletes the existing build, docs and dist directory-->
  <target name="clean">
    <delete dir="${build.dir}" />
    <delete dir="${docs.dir}" />
    <delete dir="${dist.dir}" />
  </target>

  <!-- Creates the  build, docs and dist directory-->
  <target name="makedir">
    <mkdir dir="${build.dir}" />
    <mkdir dir="${docs.dir}" />
    <mkdir dir="${dist.dir}" />
  </target>

      <!-- ================================= 
            target: resolve              
           ================================= -->
      <target name="resolve" description="--> retrieve dependencies with ivy">
          <ivy:retrieve />
      </target>

  <!-- Compiles the java code (including the usage of library for JUnit -->
  <target name="compile" depends="resolve,clean, makedir">
    <javac destdir="${build.dir}" includeantruntime="false">
        <src path="${src.dir}"/>
        <src path="${lib.dir}"/>
    </javac>

  </target>

  <!-- Creates Javadoc -->
  <target name="docs" depends="compile">
    <javadoc packagenames="src" sourcepath="${src.dir}" destdir="${docs.dir}">
      <!-- Define which files / directory should get included, we include all -->
       <fileset dir="${src.dir}">
                <include name="**" />
           </fileset>
    </javadoc>
  </target>

  <!--Creates the deployable jar file  -->
  <target name="jar" depends="compile">
    <jar destfile="${dist.dir}\hcm.jar" basedir="${build.dir}">
      <manifest>
        <attribute name="Main-Class" value="org.heromanager.MainWindow" />
      </manifest>
    </jar>
  </target>

  <target name="main" depends="compile, jar, docs">
    <description>Main target</description>
  </target>

</project> 
这是我的build.xml

  <!-- Deletes the existing build, docs and dist directory-->
  <target name="clean">
    <delete dir="${build.dir}" />
    <delete dir="${docs.dir}" />
    <delete dir="${dist.dir}" />
  </target>

  <!-- Creates the  build, docs and dist directory-->
  <target name="makedir">
    <mkdir dir="${build.dir}" />
    <mkdir dir="${docs.dir}" />
    <mkdir dir="${dist.dir}" />
  </target>

      <!-- ================================= 
            target: resolve              
           ================================= -->
      <target name="resolve" description="--> retrieve dependencies with ivy">
          <ivy:retrieve />
      </target>

  <!-- Compiles the java code (including the usage of library for JUnit -->
  <target name="compile" depends="resolve,clean, makedir">
    <javac destdir="${build.dir}" includeantruntime="false">
        <src path="${src.dir}"/>
        <src path="${lib.dir}"/>
    </javac>

  </target>

  <!-- Creates Javadoc -->
  <target name="docs" depends="compile">
    <javadoc packagenames="src" sourcepath="${src.dir}" destdir="${docs.dir}">
      <!-- Define which files / directory should get included, we include all -->
       <fileset dir="${src.dir}">
                <include name="**" />
           </fileset>
    </javadoc>
  </target>

  <!--Creates the deployable jar file  -->
  <target name="jar" depends="compile">
    <jar destfile="${dist.dir}\hcm.jar" basedir="${build.dir}">
      <manifest>
        <attribute name="Main-Class" value="org.heromanager.MainWindow" />
      </manifest>
    </jar>
  </target>

  <target name="main" depends="compile, jar, docs">
    <description>Main target</description>
  </target>

</project> 

提前谢谢大家

正如@oers所指出的,您不能将jar文件作为源文件添加到“lib”目录中,任务不能以这种方式工作

  <!-- Deletes the existing build, docs and dist directory-->
  <target name="clean">
    <delete dir="${build.dir}" />
    <delete dir="${docs.dir}" />
    <delete dir="${dist.dir}" />
  </target>

  <!-- Creates the  build, docs and dist directory-->
  <target name="makedir">
    <mkdir dir="${build.dir}" />
    <mkdir dir="${docs.dir}" />
    <mkdir dir="${dist.dir}" />
  </target>

      <!-- ================================= 
            target: resolve              
           ================================= -->
      <target name="resolve" description="--> retrieve dependencies with ivy">
          <ivy:retrieve />
      </target>

  <!-- Compiles the java code (including the usage of library for JUnit -->
  <target name="compile" depends="resolve,clean, makedir">
    <javac destdir="${build.dir}" includeantruntime="false">
        <src path="${src.dir}"/>
        <src path="${lib.dir}"/>
    </javac>

  </target>

  <!-- Creates Javadoc -->
  <target name="docs" depends="compile">
    <javadoc packagenames="src" sourcepath="${src.dir}" destdir="${docs.dir}">
      <!-- Define which files / directory should get included, we include all -->
       <fileset dir="${src.dir}">
                <include name="**" />
           </fileset>
    </javadoc>
  </target>

  <!--Creates the deployable jar file  -->
  <target name="jar" depends="compile">
    <jar destfile="${dist.dir}\hcm.jar" basedir="${build.dir}">
      <manifest>
        <attribute name="Main-Class" value="org.heromanager.MainWindow" />
      </manifest>
    </jar>
  </target>

  <target name="main" depends="compile, jar, docs">
    <description>Main target</description>
  </target>

</project> 
您需要将ivy解析的JAR添加到ANT类路径。最简单的方法是使用常春藤任务,如下所示:

  <!-- Deletes the existing build, docs and dist directory-->
  <target name="clean">
    <delete dir="${build.dir}" />
    <delete dir="${docs.dir}" />
    <delete dir="${dist.dir}" />
  </target>

  <!-- Creates the  build, docs and dist directory-->
  <target name="makedir">
    <mkdir dir="${build.dir}" />
    <mkdir dir="${docs.dir}" />
    <mkdir dir="${dist.dir}" />
  </target>

      <!-- ================================= 
            target: resolve              
           ================================= -->
      <target name="resolve" description="--> retrieve dependencies with ivy">
          <ivy:retrieve />
      </target>

  <!-- Compiles the java code (including the usage of library for JUnit -->
  <target name="compile" depends="resolve,clean, makedir">
    <javac destdir="${build.dir}" includeantruntime="false">
        <src path="${src.dir}"/>
        <src path="${lib.dir}"/>
    </javac>

  </target>

  <!-- Creates Javadoc -->
  <target name="docs" depends="compile">
    <javadoc packagenames="src" sourcepath="${src.dir}" destdir="${docs.dir}">
      <!-- Define which files / directory should get included, we include all -->
       <fileset dir="${src.dir}">
                <include name="**" />
           </fileset>
    </javadoc>
  </target>

  <!--Creates the deployable jar file  -->
  <target name="jar" depends="compile">
    <jar destfile="${dist.dir}\hcm.jar" basedir="${build.dir}">
      <manifest>
        <attribute name="Main-Class" value="org.heromanager.MainWindow" />
      </manifest>
    </jar>
  </target>

  <target name="main" depends="compile, jar, docs">
    <description>Main target</description>
  </target>

</project> 
  <target name="resolve" description="--> retrieve dependencies with ivy">
     <ivy:resolve/>
     <ivy:cachepath pathid="compile.path"/>
  </target>

  <target name="compile" depends="resolve,clean, makedir">
    <javac destdir="${build.dir}" includeantruntime="false" classpathref="compile.path">
        <src path="${src.dir}"/>
    </javac>
  </target>


Javac需要lib dir位于classmate元素中,而不是src元素中。谢谢你的工作。不幸的是,我遇到了另一个问题。我在进行Ant构建时遇到了这个错误:“类路径引用的归档文件:C:/Program Files/Java/jdk1.6.0!33/lib/tools.jar不存在。”@David听起来你用来运行Ant的JVM不是JDK(与JRE相反)。谢谢你,这正是我需要的。现在我的问题都是XML格式的问题,我可以自己解决。