[英]Converting a non-maven project to maven
我正在尝试将非Maven Java NetBeans项目转换为Maven项目。 现有项目有36个图书馆。
我做了什么
结果
新的maven项目现在具有一些旧的jar,而旧的jar没有,可能是因为它们是我添加的依赖项而添加的。
我的问题
编辑:
感谢@SubOptimal,我能够检查图表,但这是我得到的:
左侧是打开了所有库的旧项目,右侧是打开了新的maven转换项目的图。 现在您可以看到该库是相同的“ axis2-kernel-1.6.1.jar”。 在左侧,旧项目没有geronimo-ws-metadata_2.0_spec,它显示为axis2库的依赖项。
现在我的问题是一样的,旧项目是如何工作的,这是一个可选的依赖项吗?
由于旧的非Maven项目和新的Maven项目中的库版本不同,因此可能存在新的依赖项。
假设非Maven项目将在3.8版中使用JUnit。
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:test
test
表明它不是运行时依赖项。 需要运行提供的测试。
在Netbeans中,您现在都将两者视为测试依赖项
还有另一种方法可以直接在Netbeans中显示依赖关系。 当您打开pom.xml
请单击Graph
,只有在Show Graph
上打开它之后才第一次。
您会得到一个视觉依赖树
编辑:您还没有说您的旧项目使用什么。 但是,请在下面找到axis2 kernel
一个示例。
当您的新项目添加以下依赖项时
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-kernel</artifactId>
<version>1.6.1</version>
</dependency>
列出具有mvn dependency:tree
显示以下compile time
依赖关系(运行时也需要,请参见Maven依赖关系范围 )
[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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.