web-dev-qa-db-fra.com

Maven: l'élément de référentiel n'a pas été spécifié dans le POM dans distributionManagement?

J'essaie d'exécuter la commande, mvn release:perform, mais j'obtiens l'erreur suivante:

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

Voici mon fichier pom.xml:

<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>

En fait, je peux voir le 

dépôt

déclaration à l'intérieur du 

distributionManagent

étiquette.

Voici mon 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>

Un conseil pourquoi il se plaint?

69

Consultez le fichier pom.xml à l’intérieur de target/checkout/. Les chances sont, le pom.xml dans votre tronc ou branche principale n'a pas le tag distributionManagement.

37
alex

J'ai reçu le même message ("l'élément de référentiel n'a pas été spécifié dans l'élément POM de distributionManagement"). J'ai vérifié /target/checkout/pom.xml et selon une autre réponse, il manquait vraiment <distributionManagement>.

Il s’est avéré que le problème était que <distributionManagement> était absent de pom.xml dans ma branche master (avec git).

Après avoir nettoyé (mvn release:rollback, mvn clean, mvn release:clean, git tag -d v1.0.0), je lance à nouveau mvn release et tout fonctionne.

8
mazi

Vous pouvez également remplacer le référentiel de déploiement sur la ligne de commande: -Darguments=-DaltDeploymentRepository=myreposid::default::http://my/url/releases

4
Matthew Wise

Les ID des deux pensions sont tous les deux localSnap; ce n'est probablement pas ce que vous voulez et cela pourrait dérouter Maven.

Si ce n'est pas le cas: il peut y avoir plus d'éléments repository dans votre POM. Recherchez dans la sortie de mvn help:effective-pom pour repository afin de vous assurer que le nombre et l'emplacement sont conformes aux attentes.

2
Aaron Digulla

Pour moi, c'était quelque chose d'aussi simple qu'une version manquante pour mon artefact - "1.1-SNAPSHOT" 

0
cs94njw