我在我的项目中使用 Ivy,但我们使用 Artifactory 作为我们的 jar 存储库。我实际上使用<ivy:makepom>
Ant 任务来创建 Maven pom.xml
,因此我可以通过 Maven deploy:deploy 工作流将 jars 和 war 部署回我的 Maven 存储库。
我构建了一个名为的大 jar common-all.jar
,它的编译需要大约 30 个 jar。我指定了大约 10 个 jar,Ivy 拉下依赖项。作为编译过程的一部分,我指定了 log4j jar 和一些 JBoss jar。当然,这些罐子将由我们的环境提供。
有了这个Jar,我也打了一堆。我将 指定common-all.jar
为我的依赖项的一部分,并且common-all.jar
需要的 30 个罐子也被拉下。一切都很好。
问题是当我建立战争时。我不希望将 JBoss jar 或 log4j jar 作为战争的一部分。这些将由环境提供。我已将它们标记为pom.xml 文件中提供的内容。当我建立common-all.jar
.
现在,问题是我如何在编译战争代码时指定我想要这些,但我不想将它们包含在我的战争本身中。
这是我的ivy.xml
文件示例。
如何指定common-all.jar
编译需要某些特定的 jar,但是当我在战争中构建它时,我不想要所有这些 jar
<ivy-module version="1.0">
<info
organisation="com.travelclick"
module="TC-AppUtil"
revision="4.1"
status="release"/>
<configurations>
<conf name="default" visibility="public"
description="The single built artifact. Nothing else"/>
<conf name="compile" visibility="public"
description="The master module and transitive dependencies"/>
<conf name="provided" visibility="public"
description="Needed for compile. Will be provided outside or war"/>
<conf name="runtime" visibility="public"
description="Not required for compile, but for runtime"
extends="compile"/>
<conf name="default" visibility="public"
description="The default configuration"
extends="runtime"/>
<conf name="test" visibility="private"
description="Required for testing" extends="runtime"/>
</configurations>
<dependencies>
<!-- Normal Compile Dependencies -->
<dependency org="ximpleware" name="vtd-xml"
rev="2.5" conf="compile->default"/>
<dependency org="com.travelclick" name="common-all"
rev="4.1" conf="compile->compile,runtime"/>
<!-- Testing -->
<dependency org="junit" name="junit"
rev="4.10" conf="test->default"/>
</dependencies>
</ivy-module>