2015-12-16 69 views
1

当我执行一个maven发布时:执行生成的文件的名称与构建版本的含义:artifactId.version。 我需要至少执行执行时产生的战争名称将只是artifactId名称。Maven发布插件使用构建版本命名文件

my pom is here: 

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>me.tingz</groupId> 
    <artifactId>dashboard</artifactId> 
    <packaging>war</packaging> 
    <version>15-SNAPSHOT</version> 
    <name>dashboard Maven Webapp</name> 
    <url>http://maven.apache.org</url> 
    <distributionManagement> 
     <repository> 
      <id>google</id> 
      <url>file:/home/ziv/Documents/dashboard/versions/</url> 
     </repository> 
    </distributionManagement> 



    <dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 
     <version>2.5</version> 
    </dependency> 

    <dependency> 
     <groupId>org.mongodb</groupId> 
     <artifactId>mongo-java-driver</artifactId> 
     <version>3.0.4</version> 
    </dependency> 
    <dependency> 
      <groupId>com.googlecode.json-simple</groupId> 
      <artifactId>json-simple</artifactId> 
      <version>1.1</version> 
     </dependency> 
    </dependencies> 
    <build> 

     <finalName>dashboard</finalName> 
     <plugins> 

     <!-- Release plugin Test!!!! --> 
     <plugin> 

      <artifactId>maven-release-plugin</artifactId> 
      <version>2.5.2</version> 
      <configuration> 

       <tagBase> 
        file:/home/ziv/tag 
       </tagBase> 
       <checkModificationExcludes> 
      <checkModificationExclude>pom.xml</checkModificationExclude> 
     </checkModificationExcludes> 
      </configuration> 
     </plugin> 

     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-scm-plugin</artifactId> 
     <version>1.9.4</version> 
     <configuration> 
      <username>zivziv</username> 

     </configuration> 
     </plugin> 

     <plugin> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>2.4</version> 
       <configuration> 
        <source>1.8</source> 
        <target>1.8</target> 
       </configuration> 
      </plugin> 
     </plugins> 

    </build> 
    <dependencyManagement> 
    <dependencies> 
     <dependency> 
      <groupId>com.googlecode.json-simple</groupId> 
      <artifactId>json-simple</artifactId> 
      <version>1.1</version> 
     </dependency> 
    </dependencies> 
    </dependencyManagement> 
    <scm> 
     <connection>xxx</connection> 
     <developerConnection>xxxd</developerConnection> 
     <tag>dashboard-11</tag> 

    </scm> 
</project> 
+0

一个文件URL看起来像'文件:///家/ ...'... – khmarbaise

+0

感谢。你知道为什么生成的文件名始终在版本中吗? – zivziv77

回答

1

Maven Release插件不会“生成”任何文件。参与Maven构建生命周期的其他插件,例如jar插件,生成文件。因此,像你一样设置“最终名称”应该做到这一点,就“涉及到”而言。

什么版本的插件确实是

  • 标记的代码在SCM
  • 部署文物,一个仓库

后者一个人总是需要一个Maven GAV - 和V是版本。否则,发行版不会是唯一的。因此,如果您希望发布插件将工件部署到没有名称版本的存储库中,您将会失败。根据定义,这是不可能的。

你应该考虑不使用Release插件 - 毕竟,它是一个蹩脚的插件。见例如https://axelfontaine.com/blog/final-nail.html

考虑使用旅行车Maven的插件,为实现自己的目标:http://www.mojohaus.org/wagon-maven-plugin/

+0

我真的很感谢你的回答,我意识到使用maven发布是不好的。 – zivziv77

+0

通过它没有那么聪明,因为Web应用程序的上下文路径是基于对战争的名字,每次给战争的文件名不同的方式.... – zivziv77

+0

@ zivziv77你确定你是不是混淆发布<->构建?发行版必须具有某种唯一标识符,这最好放在工件名称中。当然,对于部署Web服务器的程序集,您可以删除WAR文件的版本信息。请参阅Maven的程序集插件。另外,您可以通过其他方式设置Web应用程序的上下文名称,例如,使用META-INF/context.xml。 –