2012-12-07 97 views
3

我是Maven的新手,我正尝试第一次构建一个项目。我想写一些依赖于apache lucene的代码。这是我试图获得的list of artifacts in maven如何获得来自maven版本组中的所有工件?

有没有什么办法,而不是明确地列出每个神器,我可以简单地依赖于特定版本的所有文物?我尝试这样做:

<dependency> 
    <groupId>org.apache.lucene</groupId> 
    <artifactId>*</artifactId> 
    <version>3.6.1</version> 
</dependency> 

这给了我org.apache.lucene错误

'dependencies.dependency.artifactId'::罐子价值 '' 不匹配的有效ID模式。 @ 19行,列19

我可以确认,我可以下载的依赖,当我明确说明它们。 IE浏览器能正常工作:

<dependency> 
    <groupId>org.apache.lucene</groupId> 
    <artifactId>lucene-core</artifactId> 
    <version>3.6.1</version> 
</dependency> 

我意识到这取决于Lucene的一切都可能是次优的,但做一些快速和肮脏的我讨厌不得不手动填充所有这些小的Lucene库。在maven中获取大量相关依赖项的典型做法是什么?

回答

3

简短的回答:你不能。记住你只需做一次,稍后你可以简单地复制粘贴依赖项(尽管不是很干)。还要考虑创建一个原型,它将快速创建一个具有所有必需依赖关系的框架(用于快速和肮脏的项目)。

较长的答案:好的,你可以解决这个问题。创建一个单独的pom.xml有:

<packaging>pom</packaging> 

并有手动声明所有Lucene的依赖,此起彼伏。一劳永逸。稍后,您可以简单地添加一个依赖于你的pom.xml(也就是定义有groupId/artifactId/version),这将传递地包括pom.xml的依赖关系。

谈起传递:如果你依赖于一个Maven的JAR和JAR还有其他的依赖,你得到的传递依赖含蓄。检查Lucene pom s,也许它足以导入其中的少数并依赖传递性依赖?

+0

AAAAH那是非常有用的,谢谢! –

0

里面的的groupId单一依赖添加不同的artifactId的

<dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-beans</artifactId> 
     <artifactId>spring-context</artifactId> 
     <artifactId>spring-beans</artifactId> 
     <version>4.3.7.RELEASE</version> 
    </dependency> 
+0

这是一个相对较新的功能吗?我只是在maven 3.0.5中试过,并且这是不允许的。 – Sam

+0

这适用于maven 3.5.0。我目前使用相同的。请尝试 –

相关问题