[英]How to build maven project with ant script?
我有在Ant上構建的舊版Java項目。 但是在maven上構建的新模塊項目仍在進行中。 問題是我想通過ant腳本構建maven項目並創建一個.ear文件,其中包括舊項目以及新項目的依賴項。 或者反之亦然,我也想找到通過pom.xml運行ant腳本的方法。 我嘗試了兩種方式,但都沒有成功。
在我的build.xml文件中,我放置了這個目標。 但這無濟於事
<artifact:mvn pom="../../idp/pom.xml" mavenHome="C:\Program Files\Apache\maven">
<arg value="install"/>
</artifact:mvn>
它顯示build.xml中的錯誤,即元素“ artifact:mvn”的前綴“ artifact”未綁定。
我也嘗試這樣:
<target name="compile-mvn-init" unless="compile.classpath" xmlns:artifact="urn:maven-artifact-ant">
<typedef resource="org/apache/maven/artifact/ant/antlib.xml" uri="urn:maven-artifact-ant"
classpath="lib/maven-ant-tasks-2.1.3.jar"/>
<condition property="maven.repo.local" value="${maven.repo.local}" else="${user.home}/.m2/repository">
<isset property="maven.repo.local"/>
</condition>
<echo>maven.repo.local=${maven.repo.local}</echo>
<artifact:localRepository id="local.repository" path="${maven.repo.local}"/>
<artifact:pom file="../../idp/pom.xml" id="maven.project"/>
<artifact:dependencies pathId="compile.classpath" filesetId="compile.fileset" useScope="compile">
<pom refid="maven.project"/>
<localRepository refid="local.repository"/>
</artifact:dependencies>
<artifact:dependencies pathId="test.classpath" filesetId="test.fileset" useScope="test">
<pom refid="maven.project"/>
<localRepository refid="local.repository"/>
</artifact:dependencies>
<artifact:dependencies pathId="runtime.classpath" filesetId="runtime.fileset" useScope="runtime">
<pom refid="maven.project"/>
<localRepository refid="local.repository"/>
</artifact:dependencies>
</target>
但是失敗說:
compile-mvn-init:
[typedef] Could not load definitions from resource org/apache/maven/artifact/a
nt/antlib.xml. It could not be found.
[echo] maven.repo.local=C:\Users\singh.pankaj/.m2/repository
BUILD FAILED
D:\projects\ddev\SL\DEV\RL2016_03\omega\build\build.xml:702: Problem: failed to
create task or type urn:maven-artifact-ant:localRepository
Cause: The name is undefined.
Action: Check the spelling.
Action: Check that any custom tasks/types have been declared.
Action: Check that any <presetdef>/<macrodef> declarations have taken place
。
我在build.xml中編輯了這一部分,實際上這是路徑問題。
<target name="compile-server"
description="Compiles Application Tier Implementation classes.">
<javac srcdir="${SOURCE.DIR}" destdir="${BUILD.DIR}" includes="com/emergis/els/server/**/*"
deprecation="${compile.deprecation}" debug="${compile.debug}" fork="${compile.fork}"
failonerror="${compile.failonerror}" verbose="${compile.verbose}" classpathref="javac.classpath.id"/>
</target>
<target name="compile-mvn-init" unless="compile.classpath" xmlns:artifact="urn:maven-artifact-ant">
<typedef resource="org/apache/maven/artifact/ant/antlib.xml" uri="urn:maven-artifact-ant"
classpath="${basedir}\lib\maven-ant-tasks-2.1.3.jar"/>
<condition property="maven.repo.local" value="${maven.repo.local}" else="${user.home}/.m2/repository">
<isset property="maven.repo.local"/>
</condition>
<echo>maven.repo.local=${maven.repo.local}</echo>
<artifact:localRepository id="local.repository" path="${maven.repo.local}"/>
<artifact:pom file="../../idp/pom.xml" id="maven.project"/>
<artifact:dependencies pathId="compile.classpath" filesetId="compile.fileset" useScope="compile">
<pom refid="maven.project"/>
<localRepository refid="local.repository"/>
</artifact:dependencies>
<artifact:dependencies pathId="test.classpath" filesetId="test.fileset" useScope="test">
<pom refid="maven.project"/>
<localRepository refid="local.repository"/>
</artifact:dependencies>
<artifact:dependencies pathId="runtime.classpath" filesetId="runtime.fileset" useScope="runtime">
<pom refid="maven.project"/>
<localRepository refid="local.repository"/>
</artifact:dependencies>
</target>
現在錯誤消失了,但是我的pom.xml沒有執行。 它只是說:
compile-mvn-init:
[echo] maven.repo.local=C:\Users\singh.pankaj/.m2/repository
[artifact:dependencies] Downloading: com/oracle/ojdbc14/10.2.0.1.0/ojdbc14-10.2.
0.1.0.pom from repository central at http://repo1.maven.org/maven2
[artifact:dependencies] Unable to locate resource in repository
[artifact:dependencies] [INFO] Unable to find resource 'com.oracle:ojdbc14:pom:1
0.2.0.1.0' in repository central (http://repo1.maven.org/maven2)
[artifact:dependencies] Downloading: com/oracle/weblogi/weblogic/10.3.5/weblogic
-10.3.5.pom from repository central at http://repo1.maven.org/maven2
[artifact:dependencies] Unable to locate resource in repository
[artifact:dependencies] [INFO] Unable to find resource 'com.oracle.weblogi:weblo
gic:pom:10.3.5' in repository central (http://repo1.maven.org/maven2)
[artifact:dependencies] Downloading: com/oracle/weblogi/wlfullclient/10.3.5/wlfu
llclient-10.3.5.pom from repository central at http://repo1.maven.org/maven2
[artifact:dependencies] Unable to locate resource in repository
[artifact:dependencies] [INFO] Unable to find resource 'com.oracle.weblogi:wlful
lclient:pom:10.3.5' in repository central (http://repo1.maven.org/maven2)
基於maven的項目idp中的目標文件夾未更新。
經過長時間的研究,我提出了解決方案。 在我的幫助下,我可以與舊項目一起成功構建新項目。 為此,我更改了現有的build.xml。 我再添加兩個目標“ compile-mvn-init”和“ compile-idp”。
<target name="compile"
depends="init, with.clover, compile-auth-provider, compile-shared, compile-server, compile-client, compile-mvn-init, compile-idp"
description="Compiles Java code."/>
<target name="compile-mvn-init" unless="compile.classpath" xmlns:artifact="urn:maven-artifact-ant" >
<typedef resource="org/apache/maven/artifact/ant/antlib.xml" uri="urn:maven-artifact-ant"
classpath="${basedir}\lib\maven-ant-tasks-2.1.3.jar"/>
<condition property="maven.repo.local" value="${maven.repo.local}" else="${basedir}/idp_lib">
<isset property="maven.repo.local"/>
</condition>
<echo>maven.repo.local=${maven.repo.local}</echo>
<artifact:localRepository id="local.repository" path="${maven.repo.local}"/>
<artifact:pom file="../../idp/pom.xml" id="maven.project"/>
<property name="VERSION" value="${maven.project.version}"/>
<echo>The version is ${maven.project.version}</echo>
<property name="ARTIFACT_ID" value="${maven.project.artifactId}"/>
<echo>The ARTIFACT_ID is ${ARTIFACT_ID}</echo>
<artifact:dependencies pathId="compile.classpath" filesetId="compile.fileset" useScope="compile">
<pom refid="maven.project"/>
<localRepository refid="local.repository"/>
</artifact:dependencies>
<artifact:dependencies pathId="test.classpath" filesetId="test.fileset" useScope="test">
<pom refid="maven.project"/>
<localRepository refid="local.repository"/>
</artifact:dependencies>
<artifact:dependencies pathId="runtime.classpath" filesetId="runtime.fileset" useScope="runtime">
<pom refid="maven.project"/>
<localRepository refid="local.repository"/>
</artifact:dependencies>
</target>
<target name="compile-idp" >
<javac srcdir="../../idp/src" destdir="../../idp/target/idp-0.1/WEB-INF/classes" classpathref="compile.classpath"/>
<javac srcdir="../../idp/src/main/java" destdir="../../idp/target/classes" classpathref="compile.classpath"/>
<delete file="../../dist/idp"/>
<mkdir dir="../../dist/idp"/>
<mkdir dir="../../dist/idp/META-INF"/>
<mkdir dir="../../dist/idp/WEB-INF"/>
<mkdir dir="../../dist/idp/WEB-INF/classes"/>
<mkdir dir="../../dist/idp/WEB-INF/lib"/>
<copy todir="../../dist/idp/META-INF">
<fileset dir="../../idp/src/main/webapp/META-INF"/>
</copy>
<copy todir="../../dist/idp/WEB-INF">
<fileset dir="../../idp/src/main/webapp/WEB-INF"/>
</copy>
<javac srcdir="../../idp/src/main/java" destdir="../../dist/idp/WEB-INF/classes" classpathref="compile.classpath"/>
<copy todir="../../dist/idp/WEB-INF/lib" flatten="true">
<fileset refid="runtime.fileset"/>
</copy>
<delete file="${app.deploy_dir}/config/${app.domainname}/applications/els.ear_dir/${ARTIFACT_ID}-${VERSION}.war"/>
<zip destfile="${app.deploy_dir}/config/${app.domainname}/applications/els.ear_dir/${ARTIFACT_ID}-${VERSION}.war" basedir="../../dist/idp"/>
</target>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.