Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.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
Java 如何使用ant从pom.xml编译JAR?_Java_Maven_Ant_Jar_Build.xml - Fatal编程技术网

Java 如何使用ant从pom.xml编译JAR?

Java 如何使用ant从pom.xml编译JAR?,java,maven,ant,jar,build.xml,Java,Maven,Ant,Jar,Build.xml,我用于项目配置和为我的一些实用程序类创建JAR。当我从build.xml为我的类创建JAR时,我得到了编译错误,因为一些第三方JAR是用maven配置的,而这些JAR在我的项目中不存在。如果是,如何修复?我需要从build.xml编译pom.xml吗?或者我也可以从Maven创建jar文件吗?有什么建议吗?您可以使用。它们就是为了这个目的而设计的。这就是我的理解。您想创建一个jar(其中包括一些实用程序类) 当您将maven作为工具时,您的项目库中没有jar,它们存在于您的本地存储库(~/.m2

我用于项目配置和为我的一些实用程序类创建JAR。当我从build.xml为我的类创建JAR时,我得到了编译错误,因为一些第三方JAR是用maven配置的,而这些JAR在我的项目中不存在。如果是,如何修复?我需要从build.xml编译pom.xml吗?或者我也可以从Maven创建jar文件吗?有什么建议吗?

您可以使用。它们就是为了这个目的而设计的。

这就是我的理解。您想创建一个jar(其中包括一些实用程序类)

当您将maven作为工具时,您的项目库中没有jar,它们存在于您的本地存储库(~/.m2)中,因此ant无法找到您的第三方jar

与maven合作将是一种方法。在这里找到您的解决方案

干杯

考虑使用。它是一种设计用于Ant的依赖关系管理,并且与Maven存储库完全兼容


您可能需要使用Ant任务将pom.xml转换为ivy.xml(ivy项目描述符),然后使用ivy Ant(ivy:resolve,ivy:retrieve)从maven存储库获取所有第三方JAR。

现在我已经完全使用了。现在我可以从ant build.xml获取所有依赖项。我可以通过以下两种方式获得它们

1。将所有jar文件复制到特定位置,并将它们添加到类路径中

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project name="Ant-Test" default="main" basedir="." xmlns:artifact="antlib:org.apache.maven.artifact.ant">
<path id="maven-ant-tasks.classpath" path="libs/maven-ant-tasks-2.1.3.jar" />
<typedef resource="org/apache/maven/artifact/ant/antlib.xml"
           uri="antlib:org.apache.maven.artifact.ant"
           classpathref="maven-ant-tasks.classpath" />

<artifact:pom id="mypom" file="pom.xml" />

<artifact:dependencies filesetId="mydeps" pomRefId="mypom" />

<target name="resolve" description="--> retrieve dependencies with maven">
    <!-- Resolve dependencies -->
    <artifact:dependencies filesetId="dependency.fileset">
        <pom file="pom.xml" />
    </artifact:dependencies>
    <!-- Copy all dependencies to the correct location. -->
    <copy todir="libs">
        <fileset refid="dependency.fileset" />
        <!-- This mapper strips off all leading directory information -->
        <mapper type="flatten" />
    </copy>
</target>

<property file="build.properties"/>

<path id="build.classpath">
    <fileset dir = ".">
        <include name="**/*.jar" />
    </fileset>
</path>

<target name="clean">
    <delete dir="${build.dir}" />
    <delete dir="${docs.dir}" />
    <delete dir="${dist.dir}" />
</target>

<target name="makedir">
    <mkdir dir="${build.dir}" />
    <mkdir dir="${docs.dir}" />
    <mkdir dir="${dist.dir}" />
</target>

<target name="compile" depends="clean, makedir">
    <javac includeantruntime="false" srcdir="${src.dir}" destdir="${build.dir}" classpathref="build.classpath">
        <compilerarg value="-Xlint:unchecked"/>
    </javac>
</target>

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

主要目标

2.加载pom.xml并将其作为文件集引用

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project name="Ant-Test" default="main" basedir="." xmlns:artifact="antlib:org.apache.maven.artifact.ant">

<path id="maven-ant-tasks.classpath" path="libs/maven-ant-tasks-2.1.3.jar" />
<typedef resource="org/apache/maven/artifact/ant/antlib.xml"
           uri="antlib:org.apache.maven.artifact.ant"
           classpathref="maven-ant-tasks.classpath" />
<property file="build.properties"/>

<!-- Load pom.xml for dependencies -->
<artifact:pom id="pomfile" file="pom.xml" />
<artifact:dependencies filesetId="mvn-dependencies" pomRefId="pomfile" />

<path id="build.classpath">
    <fileset refid="mvn-dependencies" />
</path>

<target name="clean">
    <delete dir="${build.dir}" />
    <delete dir="${docs.dir}" />
    <delete dir="${dist.dir}" />
</target>

<target name="makedir">
    <mkdir dir="${build.dir}" />
    <mkdir dir="${docs.dir}" />
    <mkdir dir="${dist.dir}" />
</target>

<target name="compile" depends="clean, makedir">
    <javac includeantruntime="false" srcdir="${src.dir}" destdir="${build.dir}" classpathref="build.classpath">
        <compilerarg value="-Xlint:unchecked"/>
    </javac>
</target>


<target name="main" depends="compile">
    <description>Main target</description>
    <echo> Finish Building for project - ${projectName}</echo>
</target>

主要目标
完成项目的生成-${projectName}

通过提供的链接,您的工作正常了。在阅读并测试了您的整个链接之后,现在我明白了。。。这就是我的答案。谢谢顺便问一下,如何在build.xml中导入所有依赖项?现在我很好..:D请检查我的答案,如果你看到任何错误的设置或错误,请纠正我。感谢您所做的一切。我尝试按照这些步骤操作,但仍然无法在Ant中加载Maven依赖项。我正在努力找出我的错误所在。