Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Maven:如何使用部署文件和自定义文件进行部署_Java_Maven 2_Maven Scm - Fatal编程技术网

Java Maven:如何使用部署文件和自定义文件进行部署

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中

我正试图使用一个定制的maven Wang扩展将一个jar部署到我自己的存储库中。我是否可以在settings.xml中进行配置,使其能够识别用于特定货车的自定义url方案,或者我是否必须始终修改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

您需要所有依赖项,因此请执行以下操作:

  • cd~/.m2/repository/org/apache/maven/wagen/wagen/wagen-ssh-external/2.2
  • cp-ssh-external-2.2.jar$M2\u HOME/lib/ext
  • cp-ssh-external-2.2.pom pom.xml
  • mvn依赖项:复制依赖项-DoutputDirectory=$M2\u HOME/lib/ext
  • 我不知道2013年该协议是否仍然有效。但最后,我不得不在我试图上载工件的目录中创建一个最小的pom.xml,以启用构建扩展

    我必须将groupId、artifactId和version添加到pom.xml中,这样Maven就不会抱怨了,尽管我在命令行上将它们提供给了部署文件目标(我想部署文件只关心命令行参数):


    是的,但是我如何在本地设置中定义扩展?当我的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