Java 从命令行以特定路径运行maven到特定插件
我需要从命令行执行一个特定的Maven插件。例如,在下面的示例中,我执行一个特定版本的Maven Surefire插件来测试Java项目:Java 从命令行以特定路径运行maven到特定插件,java,maven,plugins,Java,Maven,Plugins,我需要从命令行执行一个特定的Maven插件。例如,在下面的示例中,我执行一个特定版本的Maven Surefire插件来测试Java项目: mvn org.apache.maven.plugins:maven-surefire-plugin:2.19-SNAPSHOT:test 但是,上面假设在默认的Maven存储库路径中找到surefire插件2.19。现在,我的问题是,如果我想使用具有特定路径(不是Maven默认路径)的插件,我应该使用命令行做什么?在不修改pom.xml的情况下,我希望得
mvn org.apache.maven.plugins:maven-surefire-plugin:2.19-SNAPSHOT:test
但是,上面假设在默认的Maven存储库路径中找到surefire插件2.19。现在,我的问题是,如果我想使用具有特定路径(不是Maven默认路径)的插件,我应该使用命令行做什么?在不修改pom.xml
的情况下,我希望得到如下结果:
mvn /path/to/some/jar/version/org.apache.maven.plugins:maven-surefire-plugin:2.19-SNAPSHOT:test
或者更一般地说,对于以下调用
mvn groupId:artifactId:version:goal
我需要在某个地方指定一个自定义路径来执行其目标
mvn /some/path/to/groupId:artifactId:version:goal
另一方面,如果Maven不支持,请告诉我。这不是它的工作方式。Maven将始终在本地存储库中查找工件。如果在您的本地存储库中找不到,它将尝试从配置的远程存储库下载 因此,您不需要指定插件的路径。您可以指定安装该插件的本地存储库的路径。在此本地存储库中,将安装您试图调用的插件的所有依赖项。这也意味着你不能在任何地方有一个JAR到一个插件;它需要位于正确的存储库树目录中。使用本地存储库
/my/local/repo
,插件groupId:artifactId:version
的工件必须位于/my/local/repo/groupId/artifactId/version
中,并命名为artifactId version.jar
(和.pom
)。同样,插件依赖项的位置必须遵循该目录结构
默认情况下,本地存储库位于~/.m2/存储库
内。但你可以通过以下方式改变这一点:
mvn-Dmaven.repo.local=/path/to/local/repo-groupId:artifactId:version:goal
李>
settings.xml
并告诉Maven使用它。它将包括:
<settings>
<localRepository>/path/to/local/repo</localRepository>
</settings>
/路径/到/本地/回购
并与mvn-s/path/to/settings.xml groupId:artifactId:version:goal一起使用已证实的这就回答了问题。谢谢