0

我想爲我的項目生成一個源代碼jar文件,所以我已經包含了maven-source-plugin。但是,我也使用資源過濾插件爲我的項目在屬性文件中設置版本號。當我生成最終的jar文件時,屬性文件已被過濾並且版本被設置。然而在源碼罐中,仍然有未過濾的屬性。我希望源插件也可以調用資源過濾。我怎樣才能做到這一點?從maven源生成過濾的資源:jar執行

這裏是我的pom.xml

<resources> 
     <resource> 
      <directory>src/main/resources</directory> 
      <filtering>true</filtering> 
     </resource> 
    </resources> 

    <sourceDirectory>src/main/java</sourceDirectory> 
    <testSourceDirectory>src/test/java</testSourceDirectory> 
    <plugins> 
     <plugin> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.5.1</version> 
      <configuration> 
       <source>${maven.compiler.source}</source> 
       <target>${maven.compiler.target}</target> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-release-plugin</artifactId> 
      <version>2.5.3</version> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-deploy-plugin</artifactId> 
      <version>2.7</version> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-source-plugin</artifactId> 
      <executions> 
       <execution> 
        <id>attach-sources</id> 
        <goals> 
         <goal>jar</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-resources-plugin</artifactId> 
      <version>2.5</version> 
      <configuration> 
       <encoding>UTF-8</encoding> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

的(部分),這裏是我在

version = ${project.version} 

編輯

對於想澄清過濾的屬性文件,我的問題的根源是我有另一個項目是使用此庫構建的GWT項目。 GWT項目的一部分要求是,源代碼也必須可用於任何將編譯到客戶端JavaScript的任何內容。因此,該項目在類路徑中包含編譯的jar和源jar。

所以現在有兩個屬性文件具有相同的包路徑和名稱,一個存在於編譯的jar中,另一個存在於源jar中。

當我試圖讀取這個文件時,它似乎從未被過濾的源jar中挑選屬性文件。

+0

源jar包含您的項目的來源沒有篩選,沒有編譯等。除了該設置''和''沒有意義,因爲這些是默認設置。 (約定優於配置)。 – khmarbaise

+0

@khmarbaise感謝您指出我的POM中的重複配置信息,我一定會刪除它。我沒有添加額外的信息,爲什麼我想要過濾源代碼資源。我可以理解,這在技術上是不正確的,所以我添加了我遇到的實際問題。 –

+0

如何過濾生成資源階段中的屬性? –

回答

0

通常情況下,你會使用maven-source-plugin這個。不過,我在文檔中看到,無法從其處理中刪除src/main/resources,同時將target/classes添加到其處理週期中(這是您完成任務所需執行的操作)。

因此,我認爲你最好的選擇是通過maven-assembly-plugin配置。

+0

不幸的是,現在我只是在我的屬性文件中手動設置版本號,直到我可以定義好一個好的工作流。 –