List of dependency jar files in Maven

后端 未结 9 2246
我在风中等你
我在风中等你 2020-12-04 09:50

Using Maven 2, is there a way I can list out the jar dependencies as just the file names?

mvn dependency:build-classpath 

can list the jar

相关标签:
9条回答
  • 2020-12-04 10:00

    Actually, for just the final list of jars, simply use

    mvn dependency:list
    

    Which is lot more simple than dependency:tree which is an overkill to simply get the final list as it shows detailed transitive tree and conflict resolution (with verbose).

    0 讨论(0)
  • 2020-12-04 10:05

    Here's the command you're asking for

    $ mvn dependency:tree
    

    For large projects it can output a lot of text. I assume that you want to check that dependency tree contains a certain dependency, so you don't need a full list.

    Here's how you can filter output on Windows:

    $ mvn dependency:tree | findstr javax.persistence
    

    And here's how you can do it on Linux:

    $ mvn dependency:tree | grep javax.persistence
    

    Maven way to filter the dependency tree (works in Windows cmd, MacOS and Linux shell):

    $ mvn dependency:tree -Dincludes=javax.persistence:*
    

    Maven way (Windows PowerShell):

    $ mvn dependency:tree '-Dincludes=javax.persistence:*'
    
    0 讨论(0)
  • 2020-12-04 10:06

    To add a notch to the existing answers, the current maven-dependency-plugin allows saving the classpath to a property with the outputProperty parameter.

    0 讨论(0)
  • 2020-12-04 10:07

    I may be missing something here, but as you've already used copy-dependencies it sounds like what you're really after is just a list of files in a specified directory.

    Ant can do this for you without any problems, as can a shell script.

    0 讨论(0)
  • 2020-12-04 10:08

    Have you looked at the Apache Felix project? It has a whole mess of plugins, including a bundle plugin that should do what you want.

    Also, have you tried the <addClasspath> tag with <manifestFile>? That should have the desired effect of merging the classpath into your manifest.

    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-jar-plugin</artifactId>
      ...
      <configuration>
        <archive>
          <addClasspath>true</addClasspath>
          <manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>
        </archive>
      </configuration>
      ...
    </plugin>
    
    0 讨论(0)
  • 2020-12-04 10:13

    As best as I can tell, you can't get exactly that output, with the commas and no spaces. Both via the command line and via the pom.xml file, the maven-dependency-plugin or the CLI freaks out if you specify spaces or the '' (empty string) as a substitute with either pathSeparator or fileSeparator. So, you may be forced to reach something of a compromise. You can

        mvn dependency:build-classpath -Dmdep.pathSeparator=":" -Dmdep.prefix='' -Dmdep.fileSeparator=":" -Dmdep.outputFile=classpath
    

    However, that should get you a full list, separated by '::' instead of just ',', but it works. If you run:

        mvn dependency:build-classpath -Dmdep.pathSeparator="@REPLACEWITHCOMMA" -Dmdep.prefix='' -Dmdep.fileSeparator="@" -Dmdep.outputFile=classpath
    

    and attach this to the generate-resources phase and filter that resource later by setting the correct property in the process-resources phase of the lifecycle, you should be able to get just the comma.

    You can see the full list of options at: http://maven.apache.org/plugins/maven-dependency-plugin/build-classpath-mojo.html

    0 讨论(0)
提交回复
热议问题