结合Ant和Maven项目

时间:2015-07-28 10:04:42

标签: java maven ant

我在非常大的java项目中工作,包括许多较小的maven模块和一个使用ant维护的web模块。现在,我需要在我的web模块中访问用maven模块编写的项目。有可能以某种方式将maven模块添加到ant项目中吗?

我尝试从maven模块制作jar文件,并将它们简单地添加到ant项目中,但我收到错误ClassNotFoundExceptionNoClassDefFoundError

2 个答案:

答案 0 :(得分:2)

您可以使用Maven Ant Tasks将maven依赖项与Apache Ant集成。

答案 1 :(得分:0)

使用像Nexus,Artifactory或Archiva这样的Maven存储库管理器来存储由Maven项目构建的jar。

然后可以使用ANT的Apache ivy插件将它们作为依赖项(Ivy也可用于在Maven仓库中存储jar,但这是另一个问题)。

实施例

├── build.xml
├── ivysettings.xml
└── target
    └── WEB-INF
        └── lib
            ├── log4j-1.2.17.jar
            ├── slf4j-api-1.7.5.jar
            └── slf4j-log4j12-1.7.5.jar

的build.xml

<project name="demo" default="resolve" xmlns:ivy="antlib:org.apache.ivy.ant">

  <property name="build.dir" location="target"/>

  <available classname="org.apache.ivy.Main" property="ivy.installed"/>

  <target name="resolve" depends="install-ivy" description="Use ivy to resolve classpaths">
    <ivy:retrieve pattern="${build.dir}/WEB-INF/lib/[artifact]-[revision].[ext]">
      <dependency org="org.slf4j" name="slf4j-api" rev="1.7.5" conf="default"/>
      <dependency org="org.slf4j" name="slf4j-log4j12" rev="1.7.5" conf="default"/>
    </ivy:retrieve>
  </target>

  <target name="install-ivy" unless="ivy.installed">
    <mkdir dir="${user.home}/.ant/lib"/>
    <get dest="${user.home}/.ant/lib/ivy.jar" src="http://search.maven.org/remotecontent?filepath=org/apache/ivy/ivy/2.4.0/ivy-2.4.0.jar"/>
    <fail message="Ivy installed  run build again"/>
  </target>

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

  <target name="clean-all" depends="clean">
    <ivy:cleancache/>
  </target>

</project>

注意:

  • &#34; install-ivy&#34; target是可选的,我建议的方法是确保在构建服务器上安装ivy插件jar
  • 常春藤retrieve任务用于解决依赖关系并将其置于项目空间
  • 常春藤cleancache任务清除本地常春藤缓存。

ivysettings.xml

<ivysettings>
  <settings defaultResolver="my-resolvers"/>
  <resolvers>
    <chain name="my-resolvers" returnFirst="true">
      <ibiblio name="central" m2compatible="true"/>
      <ibiblio name="myrepo" root="http://mavenrepo/path/to/repo" m2compatible="true"/>
    </chain>
  </resolvers>
</ivysettings>

注意:

  • ivy配置文件是可选的,此示例演示了如何将Maven Central和本地Maven存储库用作依赖项源。