如何让Ivy将MY依赖项的依赖项捆绑到自己的jar中?

时间:2018-12-22 02:43:23

标签: jar ivy

在我的项目中,我只有一个依赖项(现在,还早!)-休眠。在我的Ivy配置中,我有以下内容:

<dependencies>
    <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
    <dependency org="org.hibernate" name="hibernate-core" rev="5.4.0.Final" conf="sources->sources"/>
    <dependency org="org.hibernate" name="hibernate-core" rev="5.4.0.Final" conf="binaries->default"/>
</dependencies>

在我的build.xml中,我有这个:

<ivy:retrieve conf="sources" pattern="war/WEB-INF/lib/[conf]/[artifact](-[classifier]).[ext]"/>
<ivy:retrieve conf="binaries" pattern="war/WEB-INF/lib/[artifact](-[classifier]).[ext]"/>       

现在,在我的lib文件夹中,我有一个名为source的文件夹,其中只有一个jar hibernate-core-sources.jar-太好了!但是在lib文件夹中,我没有一个jar,我有18个jar,每个Hibernate的依赖项(以及祖父母的依赖项等)都一个。

我真正想看到的是类似hibernate-core.jarhibernate-core-deps.jar的东西。

像这样可能吗?如果不是,是否有可能是hibernate-core.jarmy-app-deps.jar?并且如果不可能,是否可以将所有内容捆绑到一个my-app-deps.jar中?

我对Ivy的经验不是很丰富,因此答案越明确,就越好!

1 个答案:

答案 0 :(得分:0)

这是可能的,但是您必须知道,在构建类路径时,您可能最终会丢失某些类并在运行时抛出NoClassDefFoundError。 解决方案是在将transitive设置为false的情况下调用常春藤resolve,并在第二次将其设置为true的情况下调用常春藤(默认)。在上述每种方法之后,您必须调用retrieve,但是要使用不同的检索模式,因此,非传递(hibernate-core.jar)到lib文件夹,并传递到临时文件夹,您可以从中创建{ {1}}。