Инструмент для поиска общих зависимостей между модулями 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>
...
Ответы
Ответ 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