2011-05-06 26 views
57

Estoy intentando ejecutar el comando, mvn release:perform, pero me sale este error:Maven: el elemento de repositorio no se especificó en el POM dentro de la gestión de distribución?

Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.5:deploy (default-deploy) on project git-demo: Deployment failed: repository element was not specified in the POM inside distributionManagement element or in -DaltDeploymentRepository=id::layout::url parameter

Aquí es mi pom.xml archivo:

 <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.sonatype.blog</groupId> 
     <artifactId>git-demo</artifactId> 
     <packaging>jar</packaging> 
     <version>1.1-SNAPSHOT</version> 
     <name>git-demo</name> 
     <url>http://maven.apache.org</url> 
     <dependencies> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>3.8.1</version> 
      <scope>test</scope> 
     </dependency> 
     </dependencies> 

     <scm> 
     <connection>scm:git:[email protected]:Christian-Achilli-KP/git-demo.git</connection> 
     <url>scm:git:[email protected]:Christian-Achilli-KP/git-demo.git</url> 
     <developerConnection>scm:git:[email protected]:Christian-Achilli-KP/git-demo.git</developerConnection> 
     </scm> 

    <distributionManagement> 
    <!-- use the following if you're not using a snapshot version. --> 
    <repository> 
     <id>localSnap</id> 
     <name>RepositoryProxyRel</name> 
     <url>http://127.0.0.1:8080/nexus/content/repositories/releases/</url> 
    </repository> 
    <!-- use the following if you ARE using a snapshot version. --> 
    <snapshotRepository> 
     <id>MylocalSnap</id> 
     <name>RepositoryProxySnap</name> 
     <url>http://127.0.0.1:8080/nexus/content/repositories/snapshots/</url> 
    </snapshotRepository> 
</distributionManagement>  
    <build> 
     <plugins> 
      <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-release-plugin</artifactId> 
      <version>2.1</version> 
      </plugin> 
     </plugins> 
     </build> 

</project> 

hecho, me puede ver la declaración

repository

dentro del

distributionManagent

etiqueta.

Aquí es mi settings.xml:

<settings> 
<servers> 
     <server> 
      <id>localSnap</id> 
      <username>deployment</username> 
      <password>****</password> 
     </server> 

     <server> 
      <id>MylocalSnap</id> 
      <username>deployment</username> 
      <password>****</password> 
     </server> 

    <server> 
     <id>myserver</id> 
     <username>tomcat</username> 
     <password>tomcat</password> 
    </server> 


    </servers> 





<mirrors> 
    <mirror> 
     <!--This sends everything else to /public --> 
     <id>nexus</id> 
     <mirrorOf>*</mirrorOf> 
     <url>http://127.0.0.1:8080/nexus/content/groups/public/</url> 
    </mirror> 
    </mirrors> 


    <profiles> 

    <profile> 
     <id>nexus</id> 
     <properties> 

     <project.build.sourceEncoding>MacRoman</project.build.sourceEncoding> 

     <project.reporting.outputEncoding>MacRoman</project.reporting.outputEncoding> 

     </properties> 




     <!--Enable snapshots for the built in central repo to direct --> 
     <!--all requests to nexus via the mirror --> 
     <repositories> 

     <repository> 
      <id>central</id> 
      <url>http://central</url> 
      <releases><enabled>true</enabled></releases> 
      <snapshots><enabled>true</enabled></snapshots> 
     </repository> 
     </repositories> 
    <pluginRepositories> 
     <pluginRepository> 
      <id>central</id> 
      <url>http://central</url> 
      <releases><enabled>true</enabled></releases> 
      <snapshots><enabled>true</enabled></snapshots> 
     </pluginRepository> 
     </pluginRepositories> 
    </profile> 

    </profiles> 

    <activeProfiles> 
    <activeProfile>nexus</activeProfile> 
    </activeProfiles> 

</settings> 

Cualquier consejo por qué se queja?

+0

¿Ha llamado mvn lanzamiento: preparar antes? y de que hay identificadores idénticos que ya no funcionarán. – khmarbaise

+0

@khmarbaise Sí, lo llamé mvn: lanzamiento y cambio de id. Actualizaré la pregunta con el nuevo POM –

+0

¿Ha agregado .gitignore para ignorar la carpeta de destino? ¿Puedes enviar actualizaciones a github para que pueda echar un vistazo? – khmarbaise

Respuesta

2

El ID de los dos repos es ambos localSnap; eso probablemente no es lo que quieres y podría confundir a Maven.

Si no es así: Puede haber más repository elementos en su POM. Busque el resultado de mvn help:effective-pom para repository y asegúrese de que el número y el lugar de los mismos es el que espera.

+0

gracias, probé tus dos consejos pero no pude encontrar una solución funcional. En el POM efectivo hay otro lugar con la etiqueta pero no contiene nada que comprenda lo que está en la etiqueta . Hay una pregunta similar aquí http://stackoverflow.com/questions/4539917/repository-element pero no obtengo la respuesta, ¡cómo encaja la pregunta! –

+1

¿Es esta una construcción de varios módulos? Si es así, verifique las POM y versiones principales. Tal vez se olvidó de actualizar el número de versión y un módulo todavía está usando un viejo POM padre. –

29

Revise el archivo pom.xml dentro de target/checkout/. Lo más probable es que el pom.xml en su troncal o rama principal no tenga la etiqueta distributionManagement.

+1

Un 'clean' luego reintentar solucionó esto por mí. –

7

Recibí el mismo mensaje ("el elemento del repositorio no se ha especificado en el POM dentro del elemento distributionManagement"). Comprobé /target/checkout/pom.xml y según otra respuesta y realmente carecía de <distributionManagement>.

Resultó que el problema era que faltaba <distributionManagement> en pom.xml en mi rama principal (usando git).

Después de limpiar (mvn release:rollback, mvn clean, mvn release:clean, git tag -d v1.0.0) corro mvn release nuevo y funcionó.

3

También puede anular el repositorio de implementación en la línea de comandos: -Darguments=-DaltDeploymentRepository=myreposid::default::http://my/url/releases

0

Para mí, esto era algo tan simple como una versión que falta para mi artefacto - "1.1-SNAPSHOT"

Cuestiones relacionadas