假设我们有一个 Java 应用程序,而不是一个库,可以通过 Maven 中心获得。例如,一个这样的项目是jol,它在 Maven 中心有相应的 CLI 界面。
据我所知,与库的主要区别在于相应的 JAR 文件包含一个具有适当main()
方法的类,以及可选的 JAR 清单中的相关
Main-Class:
标头。如果这样的工件用作项目的依赖项,Maven 会很乐意将 JAR 文件及其依赖项下载到本地存储库,就像对待任何其他工件一样。
是否可以使用Maven直接执行这样的应用程序,而无需设置Maven项目?
插件通过设置 JVM 类路径以使依赖项可用,可以很好地适用于本地项目。用户不必担心 JAR 或
.class
文件位置等。不幸的是,据我所知,它还需要一个封闭的 Maven 项目,因此无法从任意命令行提示符中使用它。
因此,如果没有 pom.xml 文件,就无法运行 Maven 构建。 如果您有一个 pom.xml,那么根据定义,您已经“设置了一个 Maven 项目”。
正如 @DaveNewton 所说,您应该能够设置一个非常小的 pom.xml ,其中包含相关 jar 文件的依赖项和 exec-maven 插件。恐怕事情不会比这更简单了。
# 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