从命令行运行具有特定路径的maven到某个插件
Posted
技术标签:
【中文标题】从命令行运行具有特定路径的maven到某个插件【英文标题】:Run maven with specific path to certain plugin from command line 【发布时间】:2017-01-27 10:04:49 【问题描述】:我需要从命令行执行一个特定的 Maven 插件。例如,下面我执行一个特定版本的 Maven Surefire Plugin 来测试 Java 项目:
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 甚至不支持,请告诉我。
【问题讨论】:
【参考方案1】:这不是它的工作方式。 Maven 将始终在本地存储库中查找工件。如果它在你的本地存储库中找不到它,它会尝试从配置的远程存储库中下载它。
因此,您无需指定插件的路径。您指定安装该插件的本地存储库的路径。在此本地存储库中将安装您尝试调用的插件的所有依赖项。这也意味着你不能在任何地方“坐”着一个插件的 JAR;它需要位于正确的存储库树目录中。对于/my/local/repo
的本地存储库,插件groupId:artifactId:version
的工件必须位于/my/local/repo/groupId/artifactId/version
并命名为artifactId-version.jar
(和.pom
)。同理,该插件的依赖位置必须遵循该目录结构。
默认情况下,本地存储库位于~/.m2/repository
内。但您可以通过以下方式更改:
-
在命令行上指定
maven.repo.local
系统属性,例如mvn -Dmaven.repo.local=/path/to/local/repo groupId:artifactId:version:goal
;
使用自定义 settings.xml
并告诉 Maven 使用它 with the -s
command line option。它将包含:
<settings>
<localRepository>/path/to/local/repo</localRepository>
</settings>
并与mvn -s /path/to/settings.xml groupId:artifactId:version:goal
一起使用
【讨论】:
已验证。这回答了这个问题。谢谢!以上是关于从命令行运行具有特定路径的maven到某个插件的主要内容,如果未能解决你的问题,请参考以下文章
通过 Maven 前端插件或通过命令行选项从“npm install”输出调试到文件?