Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I get depend on all artifacts from a group of a version from maven?

Tags:

java

maven

lucene

I'm new to Maven and I'm trying to build a project for the first time. I want to write some code that depends on apache lucene. Here's a list of artifacts in maven that I'm trying to get.

Is there any way instead of explicitly listing each artifact, I could simply depend on all artifacts of a given version? I tried this:

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

which gave me the error

'dependencies.dependency.artifactId' for org.apache.lucene::jar with value '' does not match a valid id pattern. @ line 19, column 19

I can verify that I can download dependencies when I explicitly state them. IE this works fine:

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

I realize depending on everything in lucene is probably sub-optimal, but for doing something quick-and-dirty I'd hate to have to manually populate all these little lucene libraries. What is the typical practice for getting a large set of related dependencies in maven?

like image 932
Doug T. Avatar asked Dec 07 '12 22:12

Doug T.


1 Answers

Short answer: you can't. Remember you just do this once and later you can simply copy-paste dependencies (not very DRY though). Also consider creating an archetype that will quickly create a skeleton with all required dependencies (for quick and dirty projects).

Longer answer: well, you can work around that. Create a separate pom.xml with:

<packaging>pom</packaging>

and declare all Lucene dependencies there manually, one after another. Once and for all. Later you can simply add a dependency to your pom.xml (that is to groupId/artifactId/version defined there) which will transitively include all dependencies of that pom.xml.

Talking about transitivity: if you depend on a JAR in maven and that JAR has other dependencies, you get that transitive dependencies implicitly. Examine Lucene poms, maybe it's enough to import few of them and rely on transitive dependencies?

like image 150
Tomasz Nurkiewicz Avatar answered Sep 24 '22 03:09

Tomasz Nurkiewicz