gpt4 book ai didi

java - Maven:如何查询可执行类路径?

转载 作者:行者123 更新时间:2023-12-01 10:46:20 24 4
gpt4 key购买 nike

我有一个带有一些指定依赖项的 Maven 项目。

<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>

我如何查询maven以找出它用于这些依赖项的路径,或者我应该用于独立执行的类路径?

我的目标是构建一个使用适当的类路径运行程序的包装器。

最佳答案

Maven 中提供了几种替代方案:

Maven 依赖插件(构建类路径目标)

查看 Maven 依赖插件,尤其是 build-classpath goal 为外部执行用途提供了完整的类路径。在众多选项中,outputFile参数可能会有所帮助。
您无需配置它即可使用,只需运行

mvn dependency:build-classpath

在您的项目中,您将看到类路径作为构建输出的一部分。或者

mvn dependency:build-classpath -Dmdep.outputFile=classpath.txt

仅将类路径重定向到文件。

Maven 依赖项插件(复制依赖项目标)

要构建包装器,您还可以查看 copy-dependencies目标,它将所需的依赖项(jar)(包括传递依赖项)复制到配置的文件夹(因此您不需要硬编码到本地计算机的路径)。
官方网站上提供了插件配置的示例,here 。例如以下配置:

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.10</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/dependencies</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
<includeScope>runtime</includeScope>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>

将添加到文件夹 target/dependencies范围 compile 中声明的所有依赖项。注意:对于链接的官方示例,我添加了 <includeScope>runtime</includeScope>配置条目(根据documentation和我的测试,它将包括编译和运行时范围的依赖项),否则它还将包括test默认范围(我相信您在运行时不需要)。

Exec Maven 插件(java 或 exec 目标)

或者,您可以使用 Exec Maven Plugin执行 main使用所需的类路径从 Maven 中获取。
官方网站上提供了插件配置的示例,here .
以下面的配置为例:

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<id>my-execution</id>
<phase>package</phase>
<goals>
<goal>java</goal>
</goals>
</execution>
</executions>
<configuration>
<mainClass>com.sample.MainApp</mainClass>
</configuration>
</plugin>

将配置 Exec 插件通过 mvn exec:java 运行主类MainApp按照配置,显然具有所需的类路径。

Maven 组装插件

最后,Maven Assembly Plugin还提供了构建具有依赖项的可执行 jar 的工具,如所述 here ,在 stackoverflow 上的另一个问题中。

关于java - Maven:如何查询可执行类路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34144178/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com