[英]Executing a JAR file straight from a Maven repository
假设我们有一个 Java应用程序,而不是一个库,它可以通过 Maven 中心获得。 例如,一个这样的项目是jol ,它在 Maven central 中有其对应的 CLI 接口。
据我所知,与库的主要区别在于相应的 JAR 文件包含一个具有适当main()
方法的类,以及可选的 JAR 清单中的相关Main-Class:
标头。 如果这样的工件被用作项目的依赖项,Maven 会很高兴地将 JAR 文件连同它的依赖项一起下载到本地存储库,就像它为任何其他工件所做的那样。
是否可以使用Maven直接执行这样的应用程序,而无需设置Maven项目?
exec:java
插件通过设置 JVM 类路径使依赖项可用,从而很好地适用于本地项目。 用户不必担心 JAR 或.class
文件位置等。 不幸的是,据我所知,它还需要一个封闭的 Maven 项目,因此不能在任意命令行提示符下使用它。
不,Maven 不会做你所要求的。 它是一个构建工具,旨在基于描述项目的 pom.xml 文件构建 Java 项目。
因此,如果没有 pom.xml 文件,您将无法运行 Maven 构建。 如果你有一个 pom.xml,那么根据定义,你已经“建立了一个 Maven 项目”。
正如@DaveNewton 所说,您应该能够设置一个非常小的 pom.xml,其中包含相关 jar 文件的依赖项和 exec-maven 插件。 我担心它不会变得比这更简单。
使用 Maven 3 的一个hacky 解决方案是将 Maven Dependency Plugin 与 Maven Help Plugin 结合使用来解析本地存储库路径:
# Download JAR from Maven repo
mvn dependency:get -DremoteRepositories=http://repo1.maven.org/maven2/ \
-DgroupId=some.group.id \
-DartifactId=some-artifact-cli \
-Dversion=1.0.0 \
-Dtransitive=false
# Resolve local repository path
MVN_REPO=$(mvn help:evaluate -Dexpression=settings.localRepository -q -DforceStdout)
# Execute JAR from the local repository
java -jar $MVN_REPO/some/group/id/some-artifact-cli/1.0.0/some-artifact-cli-1.0.0.jar
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.