gpt4 book ai didi

Java,使用 Ant 处理 Apache Ivy 问题

转载 作者:太空宇宙 更新时间:2023-11-04 08:32:13 25 4
gpt4 key购买 nike

我使用 ANT 将我的东西部署到 Tomcat。但我遇到了缺少依赖项的问题,我想添加 Ivy,因为它被推荐了。

现在我将其添加到我的 build.xml 文件中:

<!-- Ivy settings start-->

<condition property="ivy.home" value="${env.IVY_HOME}">
<isset property="env.IVY_HOME" />
</condition>


<target name="download-ivy" unless="offline">
<mkdir dir="${ivy.jar.dir}"/>
<!-- download Ivy from web site so that it can be used even without any special installation -->
<get src="http://repo2.maven.org/maven2/org/apache/ivy/ivy/${ivy.install.version}/ivy-${ivy.install.version}.jar"
dest="${ivy.jar.file}" usetimestamp="true"/>
</target>


<target name="init-ivy" depends="download-ivy">
<!-- try to load ivy here from ivy home, in case the user has not already dropped
it into ant's lib dir (note that the latter copy will always take precedence).
We will not fail as long as local lib dir exists (it may be empty) and
ivy is in at least one of ant's lib dir or the local lib dir. -->
<path id="ivy.lib.path">
<fileset dir="${ivy.jar.dir}" includes="*.jar"/>
</path>
<taskdef resource="org/apache/ivy/ant/antlib.xml"
uri="antlib:org.apache.ivy.ant" classpathref="ivy.lib.path"/>
</target>

<target name="go" depends="init-ivy" description="--> resolve dependencies, compile and run the project">
<echo message="using ivy to resolve commons-lang 2.1..."/>
<!--
here comes the magic line: asks ivy to resolve a dependency on commons-lang 2.1 and to build an ant path with it from its cache
-->
<ivy:cachepath organisation="commons-lang" module="commons-lang" revision="2.1" pathid="lib.path.id" inline="true"/>
</target>
<!-- Ivy settings end-->

通过这个,我尝试将 common-lang JAR 文件添加到我的项目中。这是我得到的输出:

    Buildfile: C:\Users\Jansu\workspace\HelloWorld\build.xml
build:
deploywar:
download-ivy:
[get] Getting: http://repo2.maven.org/maven2/org/apache/ivy/ivy/2.2.0/ivy-2.2.0.jar
[get] To: C:\Users\Jansu\.ant\lib\ivy-2.2.0.jar
[get] Not modified - so not downloaded
init-ivy:
go:
[echo] using ivy to resolve commons-lang 2.1...
[ivy:cachepath] :: Ivy 2.2.0 - 20100923230623 :: http://ant.apache.org/ivy/ ::
[ivy:cachepath] :: loading settings :: url = jar:file:/C:/Users/Jansu/.ant/lib/ivy-2.2.0.jar!/org/apache/ivy/core/settings/ivysettings.xml
[ivy:cachepath] :: resolving dependencies :: commons-lang#commons-lang-caller;working
[ivy:cachepath] confs: [default, master, compile, provided, runtime, system, sources, javadoc, optional]
[ivy:cachepath] found commons-lang#commons-lang;2.1 in public
[ivy:cachepath] :: resolution report :: resolve 151ms :: artifacts dl 10ms
---------------------------------------------------------------------
| | modules || artifacts |
| conf | number| search|dwnlded|evicted|| number|dwnlded|
---------------------------------------------------------------------
| default | 1 | 0 | 0 | 0 || 1 | 0 |
| master | 1 | 0 | 0 | 0 || 1 | 0 |
| compile | 1 | 0 | 0 | 0 || 0 | 0 |
| provided | 1 | 0 | 0 | 0 || 0 | 0 |
| runtime | 1 | 0 | 0 | 0 || 0 | 0 |
| system | 1 | 0 | 0 | 0 || 0 | 0 |
| sources | 1 | 0 | 0 | 0 || 1 | 0 |
| javadoc | 1 | 0 | 0 | 0 || 1 | 0 |
| optional | 1 | 0 | 0 | 0 || 0 | 0 |
---------------------------------------------------------------------
BUILD SUCCESSFUL
Total time: 2 seconds

我想它有效..现在有2个问题:

1) 这些 JAR 文件出现在我的项目中的什么位置?

2) 如何添加其他 JAR 文件,例如 Spring 框架文件?

最佳答案

这个:

<ivy:cachepath organisation="commons-lang" module="commons-lang" revision="2.1" pathid="lib.path.id" inline="true"/>
</target>

被称为inline retrieval并告诉 Ivy 从 ivy 缓存中构建一个带有 pathid="lib.path.id" 的 ant-path,jar 不会被复制到您的项目中。缓存位于${user.home}/.ivy2中。

如果您想将工件下载到您的项目中,您必须使用 retrieve任务并定义 ivy.xml适合您的项目。

关于Java,使用 Ant 处理 Apache Ivy 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7272662/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com