我会回应@dbyrne的答案,即常春藤旨在管理二进制预编译的依赖项.您最好拥有像Nexus这样的本地存储库管理器来存储项目的第三方依赖项.
然而....
使用打包程序解析器,常春藤下载和编译依赖项在技术上是可行的.这个非常聪明的解析器旨在采用第三方zip或tar存档,然后使用ANT提取所需的工件.
下面是我从github leachim6存储库下载"hello world"源码的示例,并将其编译成一个名为"hello-world.jar"的jar.
项目文件
|-- build.xml
|-- ivysettings.xml
|-- ivy.xml
`-- repository
`-- leachim6
`-- hello-world
`-- 1.0
`-- packager.xml
Run Code Online (Sandbox Code Playgroud)
<ivy-module version="2.0">
<info organisation="com.demo" module="packager_demo"/>
<dependencies>
<dependency org="leachim6" name="hello-world" rev="1.0"/>
</dependencies>
</ivy-module>
Run Code Online (Sandbox Code Playgroud)
声明对"hello-world"工件的1.0版本的依赖性.在这个级别,常春藤将被从某种第三方存储库中获取一个罐子.
<ivysettings>
<settings defaultResolver="central"/>
<resolvers>
<ibiblio name="central" m2compatible="true"/>
<packager name="packager" buildRoot="${user.home}/.ivy2/packager/build" resourceCache="${user.home}/.ivy2/packager/cache" preserveBuildDirectories="false" restricted="false">
<ivy pattern="file:///${ivy.settings.dir}/repository/[organisation]/[module]/[revision]/ivy.xml"/>
<artifact pattern="file:///${ivy.settings.dir}/repository/[organisation]/[module]/[revision]/packager.xml"/>
</packager>
</resolvers>
<modules>
<module organisation="leachim6" name="hello-world" resolver="packager"/>
</modules>
</ivysettings>
Run Code Online (Sandbox Code Playgroud)
这是我们定义要使用的存储库(或常春藤说话中的解析器)的地方.默认情况下,ivy从Maven Central检索,但是,我们还指定应使用打包程序解析程序检索"hello-world"模块.
打包器属性需要进一步解释:
<packager-module version="1.0">
<property name="name" value="${ivy.packager.module}"/>
<property name="version" value="${ivy.packager.revision}"/>
<resource dest="archive" url="https://github.com/leachim6/hello-world/tarball/master" sha1="7f0e2836d1e8dc6130cca68d29b6f86027b22983" type="tar.gz"/>
<build>
<mkdir dir="classes"/>
<javac srcdir="archive/leachim6-hello-world-38f6567/j" includes="*.java" destdir="classes"/>
<jar destfile="artifacts/jars/${name}.jar" basedir="classes"/>
</build>
</packager-module>
Run Code Online (Sandbox Code Playgroud)
这是我们放置创建"hello-world.jar"工件的ANT脚本逻辑的地方.
此文件用于生成ANT脚本,该脚本下载远程工件(使用它的校验和以确保安全性)并提取或在我们的案例中编译将返回到常春藤任务的工件.
最后的说明: