Dim*_*ims 11 repository m2eclipse pom.xml maven
我是Maven的新手.如果我用Maven开始新项目,我应该知道它的任何存储库URL吗?
例如,这个Hibernate教程http://docs.jboss.org/hibernate/core/3.3/reference/en/html/tutorial.html说明了如何使用pom.xml文本创建示例项目.但是这个pom.xml不包含任何存储库.
所以,我的m2eclipse插件说,例如Project build error: 'dependencies.dependency.version' for org.hibernate:hibernate-core:jar is missing.,pom.xml中的所有依赖标记
这是因为存储库缺席吗?
在哪里知道存储库URL?有一个大的存储库吗?为什么默认不包括在内?
更新1 据说,Maven默认使用"中央"存储库:http://maven.apache.org/guides/introduction/introduction-to-repositories.html
我在那里搜索了hibernate-code artifact并找到了它.所以,这个工件在中央存储库中.由我的maven说依赖没有找到.因此它不使用它的中央存储库.为什么?
Tom*_*icz 17
显然你的Hibernate依赖项缺少<version>标记:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>3.6.9.Final</version> <!-- this line is missing -->
</dependency>
Run Code Online (Sandbox Code Playgroud)
请注意,您不必指定先前声明的依赖项的版本<dependencyManagement>.
每个构建脚本(不仅与Maven)都应该是可重现的,并且与环境无关.每个继承自的标准pom.xml(称为super pom)pom.xml已经定义了主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>
Run Code Online (Sandbox Code Playgroud)
您不必定义此存储库,如果所有依赖项都存在,则不必定义任何其他存储库.另一方面,如果您使用的是某些外部存储库,则必须将它们添加到其中pom.xml,以便每个开发人员始终能够构建.
底线是:如果您可以构建具有完全空存储库的项目,那么您可以pom.xml.
不建议在 POM 文件中定义存储库,因为这会导致很多问题(Maven 将在这些存储库中搜索任何工件,甚至是 Central 中可用的工件,可移植性差,...)
最佳方法:设置存储库管理器(Artifactory、Nexus)并编辑 settings.xml 文件以使用存储库管理器作为镜像。
第二种最佳方法:在 settings.xml 文件中定义所需的存储库,而不是在 pom.xml 文件中。
| 归档时间: |
|
| 查看次数: |
45830 次 |
| 最近记录: |