Передача аргументов в сборку релиза Maven - программирование
Подтвердить что ты не робот

Передача аргументов в сборку релиза Maven

Я пытаюсь выпустить библиотеку с помощью Maven и выполнить развертывание сайта в sourceforge (сначала я создал интерактивную оболочку). Релиз выполняется по заданию Дженкинса (с использованием Maven Release Plugin для Jenkins).

Я пробовал:

-X -e -Dresume=false -Dusername=puce release:prepare release:perform -Darguments="-Dusername=puce"

и

-X -e -Dresume=false -Dusername=puce -Darguments=-Dusername=puce release:prepare release:perform

но оба раза работа зависает на сайте: развертывание первого модуля:

 [INFO] --- maven-site-plugin:3.2:deploy (default-deploy) @ myproject-parent ---
 [INFO] Parent project loaded from repository: myGroupId:myOtherproject-parent:pom:1.0
 [INFO] Parent project loaded from repository: myGroupId:myOtherproject-parent:pom:1.0
 Using private key: /opt/jenkins/.ssh/id_dsa

Когда я останавливаю работу, в конце печатается следующее:

Password for ${username}@shell.sourceforge.net: channel stopped

что, вероятно, означает, что ${username} не был разрешен.

Как я могу разрешить ${username}?

Edit:

Обратите внимание, что выполняется следующее выполнение:

site-deploy -Psonatype-oss-release -Dusername=puce

Изменить 2: Как часть выпуска: выполнить maven выполняет следующую команду:

/usr/share/maven/bin/mvn -s /tmp/release-settings7797889802430474959.xml deploy site-deploy --no-plugin-updates --batch-mode -Psonatype-oss-release -P nexus -f pom.xml

-Dusername=puce, похоже, не передается этой команде maven...

Также обратите внимание, что help: effective-pom показывает следующую конфигурацию maven-release-плагина:

<plugin>
  <artifactId>maven-release-plugin</artifactId>
  <version>2.2.2</version>
  <configuration>
    <mavenExecutorId>forked-path</mavenExecutorId>
    <useReleaseProfile>false</useReleaseProfile>
    <arguments>-Psonatype-oss-release</arguments>
  </configuration>
</plugin>

Таким образом, "аргументы" определяются и его значение, похоже, достигает встроенной команды maven вместо значения, переданного в командной строке...

4b9b3361

Ответ 1

Переопределение

<plugin>
  <artifactId>maven-release-plugin</artifactId>
  <version>2.2.2</version>
  <configuration>
    <mavenExecutorId>forked-path</mavenExecutorId>
    <useReleaseProfile>false</useReleaseProfile>
    <arguments>-Psonatype-oss-release</arguments>
  </configuration>
</plugin>

с

    <plugin>
        <artifactId>maven-release-plugin</artifactId>
        <configuration>
            <mavenExecutorId>forked-path</mavenExecutorId>
            <useReleaseProfile>false</useReleaseProfile>
            <arguments>-Psonatype-oss-release -Dusername=${username}</arguments>
        </configuration>
    </plugin>

у одного из родителей был трюк.

Кажется, что ошибка в командной строке не переопределяет значение в POM.

Ответ 2

То, что я успешно сделал в прошлом, выглядит следующим образом:

  • Определите свойство в файле POM, например:

    <properties>
        <release.arguments></release.arguments>
    </properties>
    
  • Добавить свойство POM в конфигурацию плагина в файле POM, например:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-release-plugin</artifactId>
        <configuration>
            <arguments>${release.arguments}</arguments>
           ...
    
  • Передайте аргумент через свойство в командной строке, например:

    mvn release:prepare -Drelease.arguments="-N -Prelease"
    

Надеюсь, что это поможет.