2011-06-21 31 views
7

Używam wtyczki maven-antrun do zrobienia mnóstwa pracy z Antem, co ostatecznie skutkuje plikiem zip. Chciałbym wdrożyć plik zip na nasz maven serwer (Artifactory). Część maven-antrun działa zgodnie z przeznaczeniem i pomyślnie tworzy plik zip; Jednak wdrożenie powiedzie się z następującym komunikatem o błędzie:Jak mogę wdrożyć plik zip utworzony za pomocą wtyczki maven-antrun?

org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.6:deploy (default-deploy) on project projectname: The packaging for this project did not assign a file to the build artifact

Mój plik POM jest następująca:

<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/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.company.division</groupId> 
    <artifactId>projectname</artifactId> 
    <version>1.0.0-SNAPSHOT</version> 
    <packaging>pom</packaging> 

    <parent> 
     <groupId>com.company.product</groupId> 
     <artifactId>parentproject</artifactId> 
     <version>1.0.0</version> 
    </parent> 

    <distributionManagement> 
     <snapshotRepository> 
      <id>artifactory</id> 
      <name>artifactory-snapshots</name> 
      <url>http://localartifactoryserver/artifactory/libs-snapshot-local</url> 
      <uniqueVersion>false</uniqueVersion> 
     </snapshotRepository> 
    </distributionManagement> 

    <dependencies> 
     <!-- Some dependencies... --> 
    </dependencies> 

    <build> 
     <plugins> 
      <!-- Compiler plugin --> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>2.3.2</version> 
       <configuration> 
        <source>1.6</source> 
        <target>1.6</target> 
        <encoding>UTF8</encoding> 
        <optimize>true</optimize> 
       </configuration> 
      </plugin> 

      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-antrun-plugin</artifactId> 
       <version>1.6</version> 
       <executions> 
        <execution> 
         <id>compile</id> 
         <phase>compile</phase> 
         <configuration> 
          <target> 
           <!-- Do lots of other stuff with Ant. --> 

           <!-- Create a zip file. --> 
           <zip basedir="mydir" destfile="${WORKSPACE}/MyZip.zip" /> 
          </target> 
         </configuration> 
         <goals> 
          <goal>run</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 

      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-deploy-plugin</artifactId> 
       <version>2.6</version> 
       <configuration> 
        <groupId>${project.groupId}</groupId> 
        <artifactId>${project.artifactId}</artifactId> 
        <version>${project.version}</version> 
        <packaging>zip</packaging> 
        <file>MyZip.zip</file> 
        <url>${project.distributionManagement.snapshotRepository.url}</url> 
       </configuration> 
       </plugin> 
     </plugins> 
    </build> 
</project> 

Gdy przywołuję ten (z POM dominującej) z mvn -U -pl projectname clean deploy uzyskać wspomniany błąd podczas faza rozmieszczania. Czy ktoś wie, co robię źle lub jak mogę to naprawić?

Odpowiedz

10

Rozwiązanie że pracował dla mnie (nie jestem pewien, czy to jest idealny, wydaje się raczej hackish) było przejść do deploy:deploy-file cel:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-deploy-plugin</artifactId> 
    <version>2.6</version> 
    <goals> 
     <goal>deploy-file</goal> 
    </goals> 
    <configuration> 
     <repositoryId>artifactory</repositoryId> 
     <packaging>zip</packaging> 
     <generatePom>true</generatePom> 
     <url>${project.distributionManagement.snapshotRepository.url}</url> 
     <artifactId>${project.artifactId}</artifactId> 
     <groupId>${project.groupId}</groupId> 
     <version>${project.version}</version> 
     <file>${WORKSPACE}/MyZip.zip</file> 
    </configuration> 
</plugin> 

i powołać go wyraźnie:

mvn -U -X -pl projectname clean install deploy:deploy-file 
+0

Zakładając, że twój projekt to ' pom', należy pamiętać, że przejściowe zależności takiego projektu nie zostaną rozwiązane (później przez inne projekty), jeśli rozmieścisz artefakt w ten sposób. – carlspring

+0

Co zostanie rozwiązane, to sam artefakt. – carlspring

+0

Oszczędności na życie. Musiałem to zrobić w linii poleceń. Miło wiedzieć, jak to zrobić w pliku pom.xml. –