在我的任何webproject中使用maven创建jar都有问题。
到目前为止我所做的:我已经实现了一个webservice,用于在不同的web项目上进行身份验证。因此,authenticationthing独立于任何webproject运行,并且可以在将来的项目中用于对同一个用户库进行身份验证。所以webservice已经启动并运行了,我创建了一个新的maven项目,并将所有必要的文件(包括我自己的描述接口的webservice以及jax-ws所需的所有包)打包到一个jar中。这对我来说已经是一段相当长的旅程,但我通过以下依赖项实现了它:
<dependencies>
<!-- jax-ws maven dependency -->
<dependency>
<groupId>javax.xml.ws</groupId>
<artifactId>jaxws-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-rt</artifactId>
<version>2.1.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.jws/javax.jws-api -->
<dependency>
<groupId>javax.jws</groupId>
<artifactId>javax.jws-api</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>com.sun.xml.messaging.saaj</groupId>
<artifactId>saaj-impl</artifactId>
<version>1.5.1</version>
</dependency>
</dependencies>
我还添加了maven程序集插件,以获得一个包含所有依赖项的jar:
<!-- Maven Assembly Plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4.1</version>
<configuration>
<!-- get all project dependencies -->
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<!-- MainClass in mainfest make a executable jar -->
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<!-- bind to the packaging phase -->
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
因此,当我从eclipse运行maven安装时,我将jar放在目标文件夹中。
现在问题开始了。当我将这个jar添加到eclipse中的dynamicwebproject中以使用auth接口以及maven jar中必要的jax-ws-libs时,我得到一个编译错误:
The package javax.xml.namespace is accessible from more than one module: <unnamed>, java.xml
这是真的。当我查看jar时,我可以看到其中确实有一个javax.xml.namespace.qname类:
所以我想这是因为我的一个依赖项也拉了这个包,而且它是唯一一个通过jre仍然可用的(?)包(不像其他所有外包的javax.xml.ws包,它首先触发了所有maven包)。那现在该怎么办呢?我可以指定应该使用哪个qname(显然是来自jre的qname)吗?或者我可以从maven jar中排除javax.xml.namespace吗?
我完全不知道该怎么办。。。
暂无答案!
目前还没有任何答案,快来回答吧!