2015-12-16 68 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。 –