我是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/