4

我是 Maven 和 Eclipse 的新手。我们一直在使用 Netbeans 并在我们的项目中手动安装 jars。

我认为 Maven 的目的是根据您的依赖项下载所需的 jar?

在一个新项目中,我在dependenciespom.xml 文件的节点下添加了以下内容:

    <!-- Java dependencies -->
    <dependency>
        <groupId>javax.annotation</groupId>
        <artifactId>com.springsource.javax.annotation</artifactId>
    </dependency>

    <!-- Spring dependencies -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>org.springframework.orm</artifactId>
    </dependency>

    <!-- Spring Security dependencies -->
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>org.springframework.security.config</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>org.springframework.security.core</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>org.springframework.security.taglibs</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>org.springframework.security.web</artifactId>
    </dependency>

    <!-- Other dependencies -->
    <dependency>
        <groupId>com.mysql.jdbc</groupId>
        <artifactId>com.springsource.com.mysql.jdbc</artifactId>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>com.springsource.org.apache.commons.dbcp</artifactId>
        <scope>runtime</scope>
    </dependency>

但我得到的只是:

项目构建错误:javax.annotation:com.springsource.javax.annotation:jar 的“dependencies.dependency.version”缺失。

……

我究竟做错了什么?

4

5 回答 5

7

依赖块几乎总是需要一个版本号。如果您在http://search.maven.org/上搜索您的依赖项,您应该能够导航到具有完整依赖项块的有关依赖项的页面。

例如,Spring Security 的页面是:

http://search.maven.org/#artifactdetails|org.springframework.security|spring-security-aspects|3.1.0.RELEASE|jar

它的依赖块如下所示:

<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-aspects</artifactId>
    <version>3.1.0.RELEASE</version>
</dependency>
于 2012-06-01T14:34:14.973 回答
3

您需要像这样指定依赖项的版本:

<dependency> 
     <groupId>javax.annotation</groupId>       
     <artifactId>com.springsource.javax.annotation</artifactId>  
     <version>1.0.0</version>     
</dependency>
于 2012-06-01T14:35:57.157 回答
2

正如错误所说,pom 中的依赖项条目缺少依赖项的版本属性。

注意这个例子中 pom 的排列方式。 http://www.mkyong.com/spring-security/spring-security-hello-world-example/

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${spring.version}</version>
    </dependency>

可以硬编码,也可以作为属性添加。希望这可以帮助

于 2012-06-01T14:36:54.187 回答
1

正如错误消息指出的那样,您缺少<version>所有元素的子<dependency>元素。

如果您在http://mvnrepository.com上浏览依赖项,应该很容易找到<dependency>可以粘贴到 POM 文件中的示例元素,如下所示:

<dependency>
    <groupId>springframework</groupId>
    <artifactId>spring-orm</artifactId>
    <version>1.2.6</version>
</dependency>
于 2012-06-01T14:37:27.087 回答
1

除了 groupId 和 artifactId 之外,您还需要提供更多详细信息才能将依赖项添加到 pom.xml 文件。

请查看此参考以了解如何将依赖项添加到 pom.xml 文件 - http://maven.apache.org/pom.html#Dependencies

于 2012-06-01T14:40:06.260 回答