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

Инструмент для поиска общих зависимостей между модулями sibling в Maven?

Мне нужно создать новые проекты проекта maven, перенесенные в maven. Итак, я получил структуру, подобную этой

parent
|
\-- project 1
|
\-- project 2

project 1 и project 2 имеют массу зависимостей, и многие из них являются общими для друг друга. Что мне интересно, и я не мог найти в Интернете, , если есть инструмент, который я могу найти эти общие зависимости, чтобы я мог перенести их в родительский pom?

Для примера, если я предоставил этому инструменту два пема с такими элементами, как

... PROJECT 1 POM
<dependencies>
   <dependency>
       <groupId>com.foo</groupId>
       <artifcatId>A</artifactId>
       <version>1.0.0</artifactId>
   </dependency>
   <dependency>
       <groupId>com.foo</groupId>
       <artifcatId>B</artifactId>
       <version>1.0.0</artifactId>
   </dependency>
</dependencies>
...

.. PROJECT 2 POM
<dependencies>
   <dependency>
       <groupId>com.foo</groupId>
       <artifcatId>B</artifactId>
       <version>1.0.0</artifactId>
   </dependency>
   <dependency>
       <groupId>com.foo</groupId>
       <artifcatId>C</artifactId>
       <version>1.0.0</artifactId>
   </dependency>
</dependencies>
...

Я хочу, чтобы на выходе был

.. OUTPUT FROM COMPARING BOTH
<dependencies>
   <dependency>
       <groupId>com.foo</groupId>
       <artifcatId>B</artifactId>
       <version>1.0.0</artifactId>
   </dependency>
</dependencies>
...
4b9b3361

Ответ 1

Я не знаю инструмент, который работает так, как вы описали, но есть простой способ:

Сделайте временный третий проект и скопируйте все зависимости от A и B к этому pom. Вместо того, чтобы искать дубликаты с зависимость: анализировать-дублировать цель зависимостей-плагинов следующим образом:

mvn org.apache.maven.plugins:maven-dependency-plugin:2.8:analyze-duplicate

Вы получите что-то вроде этого

[INFO] ------------------------------------------------------------------------
[INFO] Building foobar 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.8:analyze-duplicate (default-cli) @ foobar ---
[INFO] List of duplicate dependencies defined in <dependencies/> in your pom.xml:
        o junit:junit:jar

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

Ответ 2

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

1.реализация всех зависимостей: mvn dependency:resolve

2.Установите все сортировки отсортированы и с отсутствием ретрансляции.. и проверьте модуль по модулю:

mvn -o dependency:list | grep ":.*:.*:.*" | cut -d] -f2- | sed 's/:[a-z]*$//g' | sort -u

3. Затем вы можете искать во всех модулях

mvn dependency:tree -Dverbose -Dincludes=commons-collections --> for example