2

当我们尝试使用 org.springframework.wspring-ws 作为 maven 项目中的依赖项时:

<dependency>
    <groupId>org.springframework.ws</groupId>
    <artifactId>spring-ws</artifactId>
    <version>1.5.8</version>
</dependency>

没有找到。查看repo,pom 和 jar 都在那里,但是 jar 的名称中有 -all ,例如spring-ws-1.5.8-all.jar.

我的问题:首先,如何在 maven pom 中使用它作为依赖项?第二,为什么这个文件是这样命名的?

4

3 回答 3

5

你可以这样做:

<dependency>
    <groupId>org.springframework.ws</groupId>
    <artifactId>spring-ws</artifactId>
    <version>1.5.8</version>
    <classifier>all</classifier>
</dependency>

不知道为什么他们有那个分类器。看起来这个库没有其他分类器,所以没有意义。看起来现在有这个库的更高版本:http: //mvnrepository.com/artifact/org.springframework.ws

看起来他们已经重新安排了一些东西,所以分类器对于最新版本来说是多余的。

于 2012-09-18T01:24:08.417 回答
3

虽然已经有一个接受的答案,但我仍然想提供一些额外的信息,因为接受的答案提供了一些可能不正确的东西。

您不应该使用 spring-ws-ver-all 作为依赖项。在 Maven 世界中,您应该使用实际的工件作为依赖项(例如 spring-ws-core 等)。

不使用这样的 uber jar 作为依赖的原因之一是,它可能会导致依赖解析出现问题。

例如,假设您依赖于 2 个工件,A 和 B。A 依赖于 spring-ws-core 版本 1.0,B 依赖于 spring-ws-core 版本 1.1。通常,Maven 将解析为在您的类路径中只有一个版本的 spring-ws-core。

However, if A is depending on spring-ws-all (which is the uber jar), Maven have no way to know that is spring-ws-all and spring-ws-core is something conflicting, and you will probably encounter problem because you have both classes from spring-ws 1.0 (from spring-ws-all) and 1.1 (from spring-ws-core).

于 2012-09-18T04:08:22.280 回答
0

如何在 maven pom 中使用它作为依赖项?

转到您的 Maven 本地存储库~/.m2/repository/org/springframework/ws/spring-ws/1.5.8,将 jar 文件名更改为spring-ws-1.5.8.jar. 使用 Lithium 的答案中提到的配置,或者使用独立的模块 jars spring-ws-core、spring-ws-security 等,而不是这个多合一的 jar。

为什么这个文件是这样命名的?

查看源代码spring-ws/tags/spring-ws-1.5.8,它使用 maven-assembly-plugin (pom.xml line 519),它使用一个程序集描述符(src/assembly/all.xml)来构建最终版本,<id>all</id> 被附加到 pom.version 1.5.8 作为分类器

我认为这是他们构建脚本中的错误。

于 2012-09-17T22:50:52.223 回答