2016-11-25 4 views
0

Я пытаюсь преобразовать и старый проект NetBeans не-maven в проект maven. Существующий проект имеет 36 библиотек.Преобразование немощного проекта в maven

Что я сделал

  1. Я выводимое содержимое папки библиотеки в файл и получил список всех банок.
  2. Я искал банку в Maven репо и добавил конкретную версию, как зависимость в П

Результат

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

Мои вопросы

  1. Если дополнительные банки, которые добавляются в разделе «Зависимости» требуются от банок, которые я добавил, как был старый проект работает? i.e без таких банок?
  2. Некоторые из банок в старом проекте, я считаю, были зависимыми от других банок. Это я понял, когда я добавил банку, и она добавила еще одну банку, которую я собирался добавить. Итак, как я могу определить, какая jar - это зависимость , из которой одна, поэтому я явно не указываю, что один в моем pom? или так я мог бы добавить их в последовательности.

EDIT:

Благодаря @SubOptimal, я был в состоянии проверить график, но вот что я получаю:

enter image description here

Слева старый проект открыт все библиотеки, справа, это новый график преобразованного проекта maven. Теперь вы можете видеть, что библиотека - это то же самое «axis2-kernel-1.6.1.jar». Слева старый проект не имеет geronimo-ws-metadata_2.0_spec, который отображается как зависимость от библиотеки axis2.

Теперь мой вопрос тот же, как работал старый проект, является ли это дополнительной зависимостью?

+0

Вы можете найти его с 'МВН зависимостью: tree'. – SubOptimal

+0

@SubOptimal старый проект не является pom one, он не принимает команду mvn – shabby

+0

Он предназначался для нового проекта maven, чтобы увидеть, откуда происходит зависимость. Являются ли зависимости, которые вы добавляете в 'pom.xml' той же версии? Это может быть причиной того, что зависимость показана для библиотеки, которую вы добавили. – SubOptimal

ответ

1

Новые зависимости могут быть там из-за различной версии библиотеки в старом проекте non-maven и новом проекте maven.

Предположим, что проект non-maven использовал JUnit в версии 3.8.

pom.XML

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>sub.optimal</groupId> 
    <artifactId>foo</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 
    <dependencies> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>3.8</version> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 
    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <maven.compiler.source>1.8</maven.compiler.source> 
     <maven.compiler.target>1.8</maven.compiler.target> 
    </properties> 
</project> 

в этом примере вы бы только JUnit в зависимости

mvn dependency:tree 

выход

[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ suboptimal --- 
[INFO] com.example:suboptimal:jar:0.0.1-SNAPSHOT 
[INFO] \- junit:junit:jar:3.8:test 

Если сейчас в проекте Maven будет использовать версию 4.12 (вместо предыдущего 3.8) вы увидите следующие зависимости (после изменения номера версии в pom.xml)

<groupId>junit</groupId> 
    <artifactId>junit</artifactId> 
<version>4.12</version> 

выход будет

[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ suboptimal --- 
[INFO] com.example:suboptimal:jar:0.0.1-SNAPSHOT 
[INFO] \- junit:junit:jar:4.12:test 
[INFO] \- org.hamcrest:hamcrest-core:jar:1.3:test 

За проявленные зависимости junit:junit:jar:4.12:testtest означает, что он не во время выполнения зависимостей. Необходимо выполнить предоставленные тесты.

В Netbeans вы видите сейчас, как в качестве теста-зависимости

enter image description here

Существует еще один способ показать зависимости непосредственно в Netbeans. Когда вы откроете pom.xml, нажмите на Graph и только в первый раз после его открытия на Show Graph.

show dependency graph

Вы дерево визуального DEPENDENCY

dependency tree

редактировать: Вы еще не сказали, что использует ваш старый проект. Но найдите один пример для axis2 kernel ниже.

Когда новый проект добавить следующие зависимости

<dependency> 
    <groupId>org.apache.axis2</groupId> 
    <artifactId>axis2-kernel</artifactId> 
    <version>1.6.1</version> 
</dependency> 

объявление зависимостей с mvn dependency:tree откосов ниже compile time зависимости (необходимые также для выполнения, см Maven dependency scopes)

[INFO] \- org.apache.axis2:axis2-kernel:jar:1.6.1:compile 
[INFO] +- org.apache.ws.commons.axiom:axiom-api:jar:1.2.12:compile 
[INFO] | +- org.apache.geronimo.specs:geronimo-activation_1.1_spec:jar:1.0.2:compile 
[INFO] | +- org.apache.geronimo.specs:geronimo-javamail_1.4_spec:jar:1.6:compile 
[INFO] | +- jaxen:jaxen:jar:1.1.1:compile 
[INFO] | \- org.apache.geronimo.specs:geronimo-stax-api_1.0_spec:jar:1.0.1:compile 
[INFO] +- org.apache.ws.commons.axiom:axiom-impl:jar:1.2.12:compile 
[INFO] | \- org.codehaus.woodstox:wstx-asl:jar:3.2.9:compile 
[INFO] +- org.apache.geronimo.specs:geronimo-ws-metadata_2.0_spec:jar:1.1.2:compile 
[INFO] +- org.apache.geronimo.specs:geronimo-jta_1.1_spec:jar:1.1:compile 
[INFO] +- javax.servlet:servlet-api:jar:2.3:compile 
[INFO] +- commons-httpclient:commons-httpclient:jar:3.1:compile 
[INFO] | \- commons-codec:commons-codec:jar:1.2:compile 
[INFO] +- commons-fileupload:commons-fileupload:jar:1.2:compile 
[INFO] +- wsdl4j:wsdl4j:jar:1.6.2:compile 
[INFO] +- org.apache.ws.commons.schema:XmlSchema:jar:1.4.7:compile 
[INFO] +- org.apache.neethi:neethi:jar:3.0.1:compile 
[INFO] +- org.apache.woden:woden-api:jar:1.0M9:compile 
[INFO] +- org.apache.woden:woden-impl-dom:jar:1.0M9:compile 
[INFO] | \- org.apache.woden:woden-impl-commons:jar:1.0M9:compile 
[INFO] +- commons-logging:commons-logging:jar:1.1.1:compile 
[INFO] \- javax.ws.rs:jsr311-api:jar:1.0:compile 

Так почему он выглядит теперь ваш старый проект им не нужен? Предполагая, что ваш старый проект использует файл axis2.war (извлечен из axis2-1.6.1-war.zip). Зависимости встроены.

jar -tf axis2.war | grep geronimo-ws-metadata 

выход

WEB-INF/lib/geronimo-ws-metadata-LICENSE.txt 
WEB-INF/lib/geronimo-ws-metadata_2.0_spec-1.1.2.jar 
Смежные вопросы