Подтвердить что ты не робот

Maven: элемент репозитория не указан в POM внутри дистрибутива управления?

Я пытаюсь запустить команду mvn release:perform, но я получаю эту ошибку:

Не удалось выполнить цель org.apache.maven.plugins: Maven-плагин-развертывания: 2.5: развернуть (default-deploy) в проекте git -demo: Ошибка развертывания: элемент репозитория не было указано в POM внутри distributionManagement или в -DaltDeploymentRepository = идентификатор:: макет:: URL Параметр

Здесь мой файл 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>

На самом деле я вижу

репозиторий

внутри

distributionManagent

тег.

Здесь мой 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>

Любой совет, почему он жалуется?

4b9b3361

Ответ 1

Просмотрите файл pom.xml внутри target/checkout/. Скорее всего, pom.xml в вашей внешней или основной ветке не имеет тега distributionManagement.

Ответ 2

Я получил то же сообщение ( "элемент репозитория не был указан в POM внутри элемента распределения управления" ). Я проверил /target/checkout/pom.xml и в соответствии с другим ответом, и ему действительно не хватало <distributionManagement>.

Оказалось, что проблема заключалась в том, что <distributionManagement> отсутствовал в pom.xml в моей ветке (используя git).

После очистки (mvn release:rollback, mvn clean, mvn release:clean, git tag -d v1.0.0) я снова запустил mvn release, и он сработал.

Ответ 3

Вы также можете переопределить репозиторий развертывания в командной строке: -Darguments=-DaltDeploymentRepository=myreposid::default::http://my/url/releases

Ответ 4

Идентификатор двух репозиториев: localSnap; возможно, не то, что вы хотите, и это может смутить Maven.

Если это не так: в вашем POM может быть больше элементов repository. Выполните поиск mvn help:effective-pom для repository, чтобы убедиться, что число и место их - то, что вы ожидаете.

Ответ 5

Для меня это было так просто, как недостающая версия для моего артефакта - "1.1-SNAPSHOT"