Удобный способ обновить версию многомодульного проекта в Eclipse - PullRequest
3 голосов
/ 10 апреля 2020

У меня есть мультимодульный проект Maven в Eclipse.

Каждый раз, когда я хочу обновить версию, я go до Run As -> Run Configurations..., меняю параметр newVersion цели versions:set на большее число, а затем запустите цель.

Есть ли что-то более прямое?

Обратите внимание, что я не могу использовать CI-дружественные версии, потому что они содержат sh с плагином релиза Maven.

Ответы [ 3 ]

2 голосов
/ 17 апреля 2020

Следуя идее { ссылка },

Я настроил для параметра newVersion значение ${string_prompt:newVersion}, как показано на рисунке ниже

Eclipse Maven Run Dialogue

Затем мне предложат указать номер версии, который отлично работает.

1 голос
/ 23 апреля 2020

Основываясь на ответе Дж.Ф. Мейера, приведено объяснение конфигурации запуска для M2E, которое, как я подозреваю, вы уже установили, и в точности соответствует тому, что вы просите.

Диалог запуска запуска

  1. Открыть «Выполнить конфигурации ...»
  2. Выбрать «Maven Build»
  3. Нажать «Новая конфигурация запуска» (вверху слева)
  4. Дайте ему имя (например, «Установить версию»)
  5. Нажмите «Рабочая область ...» и выберите родительский проект pom
  6. Введите «version: set» в разделе «Цели»
  7. прокрутка вниз (можно скрыть)
  8. В разделе «Параметры» выберите «Добавить ...» справа
  9. Добавить параметр с помощью
    • Имя = newVersion
    • Value = ${string_prompt:"New Version":0.0.1-SNAPSHOT}

, поэтому, чтобы расширить то, на что уже указал JP Meijer, переменная string_prompt, как показано в шаге 9, поддерживает отдельный имя, например «Новая версия», и значение по умолчанию, в данном случае 0.0.1-SNAPSHOT.

Теперь, Применить, Сохранить и Выполнить!

0 голосов
/ 16 апреля 2020

Вот скрипт, который проверяет, нуждается ли система сборки maven в обновлениях. Запустив этот скрипт, вы получите все обновления (но ни одно из них не будет применено). Это позволяет вам изменить все, некоторые или ни одного, как вам удобно.

mvn versions:display-plugin-updates
mvn versions:display-parent-updates
mvn versions:display-dependency-updates

Обычно я сохраняю этот скрипт на верхнем уровне check-versions.sh или check-versions.cmd (с учетом языка сценариев).

Чтобы этот скрипт работал, в /project/build/plugins вам понадобится org.codehaus.mojo:versions-maven-plugin:2.7 или выше. Я обычно настраиваю плагин так:

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>versions-maven-plugin</artifactId>
  <version>2.7</version>
  <configuration>
    <generateBackupPoms>false</generateBackupPoms>
  </configuration>
</plugin>

Поскольку это не делает резервные копии файлов *. 1044 *, которые загрязняют мою историю git.

Первые несколько раз, когда вы запускаете этот , вы можете заметить, что унаследованные плагины показывают, что они устарели (поскольку они эффективно встроены в значения по умолчанию в родительском pom maven по умолчанию. xml). Вам нужно будет явно определить значения по умолчанию для более новой версии, чтобы заставить их прекратить создавать отчеты.

Кроме того, вы обнаружите, что многие плагины по-прежнему будут сообщать, поскольку неясно, какой минимум требуемая версия Java и минимальная требуемая версия Apache Maven. Чтобы закодировать эти требования в pom. xml, вы будете использовать плагин Maven Enforcer. Мой пример, который заставляет Maven версии 3.5.4 и Java версии 11:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-enforcer-plugin</artifactId>
  <version>3.0.0-M3</version>
    <executions>
      <execution>
        <id>enforce-maven</id>
          <goals>
            <goal>enforce</goal>
          </goals>
          <configuration>
            <rules>
            <requireMavenVersion>
              <version>3.5.4</version>
            </requireMavenVersion>
            <requireJavaVersion>
              <version>11</version>
            </requireJavaVersion>
          </rules>
        </configuration>
      </execution>
    </executions>
  </plugin>

С этими инструментами я в настоящее время получаю вывод по одному из моих проектов

[INFO] Scanning for projects...
[INFO]
[INFO] ---------------< com.edwbuck.parserhelp:pascal-adapter >----------------
[INFO] Building pascal-adapter 1.0.0
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- versions-maven-plugin:2.7:display-plugin-updates (default-cli) @ pascal-adapter ---
[INFO] artifact com.github.sevntu-checkstyle:dsm-maven-plugin: checking for updates from central
[INFO] artifact net.nicoulaj.maven.plugins:checksum-maven-plugin: checking for updates from central
[INFO]
[INFO] The following plugin updates are available:
[INFO]   maven-project-info-reports-plugin .................... 2.6 -> 3.0.0
[INFO]
[INFO] All plugins have a version specified.
[INFO]
[INFO] Project inherits minimum Maven version as: 3.5.4
[INFO] Plugins require minimum Maven version of: 3.2.1
[INFO]
[INFO] No plugins require a newer version of Maven than specified by the pom.
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2.976 s
[INFO] Finished at: 2020-04-16T07:52:12-05:00
[INFO] ------------------------------------------------------------------------
[INFO] Scanning for projects...
[INFO]
[INFO] ---------------< com.edwbuck.parserhelp:pascal-adapter >----------------
[INFO] Building pascal-adapter 1.0.0
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- versions-maven-plugin:2.7:display-parent-updates (default-cli) @ pascal-adapter ---
[INFO] Project does not have a parent.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.325 s
[INFO] Finished at: 2020-04-16T07:52:15-05:00
[INFO] ------------------------------------------------------------------------
[INFO] Scanning for projects...
[INFO]
[INFO] ---------------< com.edwbuck.parserhelp:pascal-adapter >----------------
[INFO] Building pascal-adapter 1.0.0
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- versions-maven-plugin:2.7:display-dependency-updates (default-cli) @ pascal-adapter ---
[INFO] artifact com.edwbuck.parserhelp:pascal_client: checking for updates from central
[INFO] artifact org.junit.jupiter:junit-jupiter-engine: checking for updates from central
[INFO] artifact org.junit.jupiter:junit-jupiter-api: checking for updates from central
[INFO] artifact org.influxdb:influxdb-java: checking for updates from central
[INFO] The following dependencies in Dependencies have newer versions:
[INFO]   org.junit.jupiter:junit-jupiter-api ................... 5.6.0 -> 5.6.2
[INFO]   org.junit.jupiter:junit-jupiter-engine ................ 5.6.0 -> 5.6.2
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.848 s
[INFO] Finished at: 2020-04-16T07:52:18-05:00
[INFO] ------------------------------------------------------------------------

, что означает, что мне нужно обновить maven-project-info-reports-plugin и мои org.junit.jupiter:junit-jupiter-api и org.junit.jupiter:junit-jupiter-engine плагины.

Обычно я не использую плагин maven version для фактического обновления в pom. xml file, поскольку текстовые редакторы работают быстро, если вы делаете все обновления, которые хотите сделать в pom. xml за один раз.

В настоящее время плагин maven version, предлагаемый codehaus, не имеет опция командной строки для автоматического обновления более чем одной версии одновременно. Причины этого не просты. Чтобы использовать плагин versions:update-properties, необходимо:

  1. Определить политику обновления (что обновлять / что не обновлять) в pom. xml.
  2. Определите политику обновления (что обновлять / что не обновлять) в командной строке.

Эти правила являются подробными, поскольку охватывают весь проект. Да, они могут использовать глобальное сопоставление, но они все еще многословны. Что касается моих личных проектов, я замечаю, что для того, чтобы они обеспечивали мне надлежащую обработку, я обновлял их слишком часто, поэтому я оставляю их вне изображения, вместо этого решая, что обновлять или не обновлять в то время, когда я работаю над выводом моего check-updates script.

Это потому, что не всегда безопасно автоматически обновлять плагины и зависимости. Иногда следующая версия плагина требует изменения кода проекта. Например, проекты, переходящие с Java 8 на Java 9, требуют изменений в том, как они построены и связаны. То же самое относится и к зависимостям, если вы хотите, чтобы код был привязан к недекларируемым API.

...