Преобразование Gradle в Maven, разрешить подстановочный знак "+" в имени версии зависимостей зависимостей? - PullRequest
1 голос
/ 02 марта 2020

Я прочитал другие вопросы, но они не совсем мой вопрос.

У меня есть набор проектов, которые в настоящее время создаются с использованием Gradle, и я пытаюсь переключить все на maven, поскольку проекты основаны на Gradle, естественно в версиях артефактов используется подстановочный знак «+». Я могу решить эту проблему при генерации одного pom " BaseProject " и преобразовать:

"projectA-1.0.+" --> "projectA-1.0.0"

, и все работает отлично. но моя проблема в том, что « projectA-1.0.0 » само зависит от « project C -1.0. + », « projectD-1.0. +"и" projectE-1.0. +"и естественно я получаю ошибку компиляции. проблема в том, что каждый проект зависит от другого, и, конечно, не так интересно редактировать все остальные проекты.

"projectA-1.0.0"--> "projectC-1.0.+"
               \--> "projectD-1.0.+"
               \--> "projectE-1.0.+"--> "projectX-1.0.+" 
                                   \--> "projectZ-1.0.+" 

Есть ли какое-либо возможное решение или обходной путь для этой проблемы?

Обновление 1

Вот изображение моего журнала ошибок, обратите внимание, что эти упомянутые артефакты не используются напрямую в моем проекте, и у меня их нет в моем POM файл. Я думаю, что они являются зависимостями моих проектов.

enter image description here

update 2

вот части pom вторичной зависимости:

<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>mygroup</groupId>
  <artifactId>Myartifact</artifactId>
  <version>1808.0.0</version>
  <dependencies>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-api</artifactId>
      <version>2.6.2</version>
      <scope>compile</scope>
    </dependency>

    <dependency>
      <groupId>mygroup</groupId>
      <artifactId>mysecondaryartifact</artifactId>
      <version>1805.0.0+</version>
      <scope>compile</scope>
    </dependency>
  </dependencies>
</project>

версии, разрешенные с помощью "+", и не только в этом одном pom, эта проблема существует во всех зависимостях, переведенных из gradle.

обновление 3

Как вы можете видеть в дереве зависимостей, все версии переведены в понятную для maven версию, и они понятны для maven, но только некоторые из них не понимаются для maven.

+--- mygroup:myartifact:1808.0.+ -> 1808.0.0
|    +--- org.apache.logging.log4j:log4j-api:2.6.2
|    +--- org.apache.logging.log4j:log4j-core:2.6.2 (*)
|    +--- mygroup:mysecondaryartifactA:1805.0.0+ -> 1805.0.0 (*)    Resolves
|    +--- mygroup:mysecondaryartifactB:1805.0.+ -> 1902.0.0 (*)   Resolves
|    +--- mygroup:mysecondaryartifactC:1808.0.+ -> 1907.0.0       Resolves
|    \--- mygroup:mysecondaryartifactD:2.0.+ -> 2.0.0  Does not Resolve --> Missing artifact mygroup:mysecondaryartifactD:2.0.+
|         \--- commons-primitives:commons-primitives:1.0  

1 Ответ

1 голос
/ 09 марта 2020

с использованием maven 5.2.1 или более поздней версии, существует задача с именем publishtoMavenLocal, которая использует средство отображения версий за видимым, и публикация с этой версией maven разрешит фактически используемую версию плагинов в созданном pom, которая находится в build \ публикации \ Maven java

...