Как использовать артефакт: writepom и артефакт: pom? - PullRequest
1 голос
/ 27 июля 2010

Я пытался использовать writepom, используя этот http://maven.apache.org/ant-tasks/examples/write-pom.html в качестве ссылки, и у меня возникли проблемы. По сути, я просто пытаюсь проверить, будет ли он работать на самом деле, поэтому файл POM довольно прост. Увидеть ниже.

<project name="CreatePOMStructure" basedir="./test" xmlns:artifact="antlib:org.apache.maven.artifact.ant">
 <description>
  Test Script
 </description>

 <path id="maven-ant-tasks.classpath" path="/usr/local/apache-ant-1.8.1/lib/maven-ant-tasks-2.1.1.jar" />
 <typedef resource="org/apache/maven/artifact/ant/antlib.xml"
            uri="antlib:org.apache.maven.artifact.ant"
            classpathref="maven-ant-tasks.classpath" />

 <artifact:pom id="maven-pom" groupId="com.cgi.wealth" artifactId="maven-pom-setup" version="1.0" name="maven-setup">
  <license name="apache" url="http://www.apache.org"/>
     <dependency groupId="junit" artifactId="junit" version="4.1" scope="test"/>
     <dependency groupId="org.codehaus.plexus" artifactId="plexus-utils" version="1.5.5"/>
 </artifact:pom>

 <artifact:writepom pomRefId="mypom1" file="mypom1.xml"/>

</project>

Я получаю эту ошибку при попытке запустить ant

[ОШИБКА] Не удалось выполнить цель org.apache.maven.plugins: Maven-antrun-плагин: 1,0: бег (скомпилировать) в проекте maven-setup: Ошибка при выполнении задач муравья: следующая ошибка произошла во время выполняя эту строку: /maven-setup/scripts/build.xml:11: java.lang.NoSuchMethodError: org.apache.maven.settings.RuntimeInfo (Lorg / Apache / Maven / настройки / Настройки;). В -> [Помощь 1]

Я не уверен, что это актуально, но до того, как я добавил typedef, я получал эту ошибку:

[ОШИБКА] Не удалось выполнить цель org.apache.maven.plugins: Maven-antrun-плагин: 1,0: бег (скомпилировать) в проекте maven-setup: Ошибка при выполнении задач муравья: следующая ошибка произошла во время выполняя это линия: /maven-setup/scripts/build.xml: 9: Не удалось создать задачу или тип типа: antlib: org.apache.maven.artifact.ant: П

.

Муравей не может найти задачу или класс эта задача опирается на

Извините за наиболее вероятный основной вопрос, но я не могу исправить это сам.

* * Тысяча двадцать-одина [EDIT]

Вот файл pom.xml, который я использую для запуска сборки ant.

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.cgi.wealth</groupId>
  <artifactId>maven-setup</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-antrun-plugin</artifactId>

                <version>1.0</version>
                <executions>
                    <execution>
                        <id>compile</id>
                        <phase>generate-sources</phase>
                        <configuration>            
                            <tasks>
                                <ant antfile="${basedir}/scripts/build.xml" />
                            </tasks>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <dependency>
            <groupId>org.apache.maven</groupId>
            <artifactId>maven-ant-tasks</artifactId>
            <version>2.1.1</version>
        </dependency>
    </dependencies>    
</project>

Проблема с проектом существует только при запуске задачи maven "mvn generate-sources" (см. Pom.xml выше). Когда я просто запускаю "муравей", он успешно строится. Любое понимание очень ценится.

1 Ответ

2 голосов
/ 27 июля 2010

Этот скрипт работает нормально, если вы поместили maven-ant-tasks-2.1.1.jar в тот же каталог, где живет ваш build.xml.
Ошибки, с которыми вы сталкиваетесь, говорят мне, что путь может быть неправильным.

Кроме того, лучше не устанавливать атрибут basedir вашего проекта и использовать значение по умолчанию (текущий каталог build.xml)

И последнее, но не менее важное: artifact:writepom pomRefId должно соответствовать id из artifact:pom.

Ниже приведен скрипт:

<project
  name="CreatePOMStructure"
  default="default"
  xmlns:artifact="antlib:org.apache.maven.artifact.ant"
>
   <path id="maven-ant-tasks.classpath" path="maven-ant-tasks-2.1.1.jar" />

   <typedef
     resource="org/apache/maven/artifact/ant/antlib.xml"
     uri="antlib:org.apache.maven.artifact.ant"
     classpathref="maven-ant-tasks.classpath"
   />

   <target name="default">
     <artifact:pom id="maven-pom"
       groupId="com.cgi.wealth"
       artifactId="maven-pom-setup"
       version="1.0"
       name="maven-setup"
     >
       <license name="apache" url="http://www.apache.org"/>
       <dependency
         groupId="junit"
         artifactId="junit"
         version="4.1"
         scope="test"
       />
       <dependency
         groupId="org.codehaus.plexus"
         artifactId="plexus-utils"
         version="1.5.5"
       />
     </artifact:pom>

     <artifact:writepom pomRefId="maven-pom" file="mypom1.xml"/>
   </target>

</project>
...