Ich habe Legacy-Java-Projekt, das auf Ant gebaut wird. Aber ein neues Modulprojekt, das auf Maven basiert, ist ein laufendes Projekt. Problem ist, ich möchte Maven-Projekt durch Ant-Skript erstellen und erstellen Sie eine EAR-Datei, die sowohl ältere als auch neue Projektabhängigkeiten enthält. Oder umgekehrt. Ich möchte auch herausfinden, wie man ant-Skript über pom.xml ausführt. Ich habe beide Wege ausprobiert, konnte aber keinen Erfolg haben.Wie man Maven-Projekt mit Ameisenskript baut?
In meiner build.xml habe ich dieses Ziel gesetzt. Aber es wird nicht helfen
<artifact:mvn pom="../../idp/pom.xml" mavenHome="C:\Program Files\Apache\maven">
<arg value="install"/>
</artifact:mvn>
Es zeigt Fehler in build.xml, dass ‚das Präfix " Artefakt " für Element " Artefakt. Mvn " ist nicht gebunden‘
ich dies auch versuchen:
<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>
Aber es versäumt sagt, dass:
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
.
Ich habe diesen Teil in meiner build.xml bearbeitet, um dieses tatsächlich Problem für Pfad ist.
<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>
Jetzt war der Fehler weg, aber meine pom.xml wird nicht ausgeführt. Es heißt einfach:
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)
Mein Zielordner in Projekt-IDP, der auf Maven basiert, wird nicht aktualisiert.
Sie können ein Ant-Projekt mit Maven erstellen, aber ich glaube nicht, dass Sie ein Maven-Projekt mit Ant aufbauen können. https://maven.apache.org/ant-tasks/ Aber der beste Weg ist, Legacy zu Maven zu migrieren. –
Ant hat eine Exec-Task und das könnte Alles in der Befehlszeile ausführen. Das würde also funktionieren. Oder Sie könnten Gradle benutzen, um sowohl Ameise als auch Maven zu führen. http://ant.apache.org/manual/Tasks/exec.html –