Java Maven:如何使用部署文件和自定义文件进行部署
我正试图使用一个定制的maven Wang扩展将一个jar部署到我自己的存储库中。我是否可以在settings.xml中进行配置,使其能够识别用于特定货车的自定义url方案,或者我是否必须始终修改pom文件以包含货车扩展名Java Maven:如何使用部署文件和自定义文件进行部署,java,maven-2,maven-scm,Java,Maven 2,Maven Scm,我正试图使用一个定制的maven Wang扩展将一个jar部署到我自己的存储库中。我是否可以在settings.xml中进行配置,使其能够识别用于特定货车的自定义url方案,或者我是否必须始终修改pom文件以包含货车扩展名 使用部署文件时,不需要有一个基本pom或任何可用的pom。Settings.xml是唯一保证存在的地方,但我不知道如何使用它来定义扩展。好的,好的,更正:您不能在Settings.xml中定义的中定义元素。您可以在settings.xml中激活配置文件,但可以在基本pom中
使用部署文件时,不需要有一个基本pom或任何可用的pom。Settings.xml是唯一保证存在的地方,但我不知道如何使用它来定义扩展。好的,好的,更正:您不能在
Settings.xml
中定义的
中定义
元素。您可以在settings.xml
中激活配置文件,但可以在基本pom
中定义它
对不起,我能想到的唯一其他方法(可能是您正在寻找的)是直接在$M2\u HOME/lib
下复制扩展jar。所有$M2\u HOME/lib/*.jar
都放在类路径中,因此这实际上必须具有与
相同的效果
但是,扩展更好,因为您可以更容易地控制使用哪个版本的扩展(例如,通过基本pom)
好的,试着在下面复制扩展jar
$M2_HOME/lib
你需要这样做。大多数环境在其所有项目的顶部都有一个公司的项目(最佳实践),因此这对单个开发人员来说通常不会太痛苦——他们只是从公司的pom继承而来
<build>
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-scm</artifactId>
<version>1.0-alpha-7-SNAPSHOT</version>
</extension>
<extension>
<groupId>org.apache.maven.scm</groupId>
<artifactId>maven-scm-manager-plexus</artifactId>
<version>1.0-beta-3-SNAPSHOT</version>
</extension>
<extension>
<groupId>org.apache.maven.scm</groupId>
<artifactId>maven-scm-provider-svnexe</artifactId>
<version>1.0-beta-3-SNAPSHOT</version>
</extension>
</extensions>
</build>
<distributionManagement>
<site>
<id>my.svn.server</id>
<url>scm:svn:https://username@svn.apache.org/svn/root/module</url>
</site>
</distributionManagement>
siddhadev是对的,但是没有什么额外的东西。。。 (我会在评论中提到这一点,但我没有足够的声誉) 您可以将罐子放在下面,使其保持干净分开: $M2_HOME/lib/ext 您需要所有依赖项,因此请执行以下操作:
是的,但是我如何在本地设置中定义扩展?当我的maven抱怨“profile”中的“build”时,你在哪里发现它应该工作?好的,对不起,请看我的更正-settings.xml中的概要定义在某种程度上是有限的。用户$M2_HOME/lib这是我目前正在做的事情,但它不是很方便,因为每个使用该扩展的人都必须手动下载它并将其放在lib目录中。无论如何谢谢你!在使用部署文件功能时,开发人员不必拥有任何可用的POM。我如何使用设置来定义扩展?我感觉你在追逐一些奇怪的无法完成的事情。我也会试着问一下Maven IRC频道。我同意;开发人员不必为部署文件设置pom。无法在settings.xml中执行扩展。连我都感到惊讶!除非定义了pom,否则不能。目前它还不是一个受支持的用例,我可以确认项目、组、工件和版本被忽略了,而命令行参数被忽略了。好发现!遵循本指南,您不需要pom文件:
/** {@inheritDoc} */
public String getScmType()
{
return "git";
}
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion>
<groupId>your-groupId</groupId>
<artifactId>your-artifactId</artifactId>
<version>your-version</version>
<build>
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ssh</artifactId>
<version>2.4</version>
</extension>
</extensions>
</build>
</project>
mvn deploy:deploy-file -Durl=scp://shell.sourceforge.net:/home/project-web/... -DrepositoryId=repoId -Dfile=my-file.jar -DgroupId=your-groupId -DartifactId=your-artifactId -Dversion=your-version -Dpackaging=jar