4

我必须在我的 中一个一个地定义每个弹簧库pom.xml,还是有某种合装包?

我发现,比如我让maven下载spring-core的时候,它也下载了spring-asm。

是否有更多这样的包或类似的快捷方式......?

4

1 回答 1

5

这里可能有重复:Maven - 将 pom 的所有子模块作为依赖项包含在另一个模块中

最简洁的答案是不。长答案是,即使你可以,这也不是一个好主意。

Spring 曾经提供捆绑groupId=org.springframework artifactId=springgroupId=org.springframework artifactId=spring-all. 由于各种原因(我找不到链接),Spring 认为这是一种不好的做法,我倾向于同意。

最好的办法是,如果你真的想包含所有的 spring 子模块是使用父 pom 和一个属性来表示版本......例如:

<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>com.snaphop</groupId>
  <artifactId>snaphop-parent</artifactId>
  <version>0.0.53-SNAPSHOT</version>
  <name>snaphop-parent</name>
    <packaging>pom</packaging>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.6</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <spring.version>3.1.0.RELEASE</spring.version>
    </properties>

..skip some lines

<dependencyManagement>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>

您必须在此处阅读有关父 pom 的信息:http ://maven.apache.org/guides/introduction/introduction-to-the-pom.html#Project_Inheritance_vs_Project_Aggregation (或只是谷歌)。

另一种选择是使用所有弹簧依赖项制作您自己的虚拟项目并依赖它。

话虽如此,我真的建议您明确选择您的依赖项,因为它确实可以帮助您将来模块化/解耦/重构您的项目。

于 2012-09-07T15:38:31.873 回答