我是Maven的新手。如果我使用Maven启动新项目,我是否应该知道任何可以使用它的存储库URL?

例如,此Hibernate教程http://docs.jboss.org/hibernate/core/3.3/reference/en/html/tutorial.html讲述了如何使用pom.xml文本创建示例项目。但是,此pom.xml不包含任何存储库。

因此,我的m2eclipse插件针对pom.xml中的所有依赖项标签说,例如Project build error: 'dependencies.dependency.version' for org.hibernate:hibernate-core:jar is missing.

这是因为存储库缺失吗?

在哪里知道存储库URL?有一个大仓库吗?为什么默认不包含它?

更新1
这里说,Maven默认使用“中央”存储库:http://maven.apache.org/guides/introduction/introduction-to-repositories.html

我在那里搜索了休眠代码工件并找到了它。因此,此工件位于中央存储库中。据我的专家说,没有找到依赖性。因此,它不使用它的中央存储库。为什么?

最佳答案

显然您的Hibernate依赖项缺少<version>标记:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-entitymanager</artifactId>
    <version>3.6.9.Final</version> <!-- this line is missing -->
</dependency>


请注意,您不必指定先前在<dependencyManagement>中声明的依赖项版本。

旧答案:

每个构建脚本(不仅限于Maven)都应具有可复制性,并且与环境无关。每个pom.xml都继承的Standard pom.xml(称为super pom)已经定义了主要的Maven中央存储库:

<repositories>
  <repository>
    <id>central</id>
    <name>Maven Repository Switchboard</name>
    <layout>default</layout>
    <url>http://repo1.maven.org/maven2</url>
    <snapshots>
      <enabled>false</enabled>
    </snapshots>
  </repository>
</repositories>


如果您所有的依赖项都在那里,则不必定义此存储库,也不必定义任何其他存储库。另一方面,如果您正在使用某些外部存储库,则必须将它们添加到pom.xml,以便每个开发人员始终能够进行构建。

底线是:如果您可以构建具有完全空的存储库的项目,则pom.xml很好。

关于maven - 我应该在pom.xml中编写存储库吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8932458/

10-10 23:02
查看更多