2014-05-16 49 views
1

我有一個maven項目,並且依賴一個包含一個資源文件(c3p0.xml)的jar,我將該資源複製到我的src/main/resource文件夾中,並根據我的要求更改內容以便我可以使用它。如何在使用maven生成可運行jar時避免資源覆蓋?

enter image description here

,但我運行MVN組裝後:裝配命令,生成罐包含資源的內容是依賴罐子不是我在的src/main /資源如何處理它的內容了?

我的pom.xml的主要內容如下:

<plugin> 
      <!-- mvn assembly:assembly --> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <version>2.4</version> 
      <configuration> 
       <descriptorRefs> 
        <descriptorRef>jar-with-dependencies</descriptorRef> 
       </descriptorRefs> 
       <archive> 
        <manifest> 
         <mainClass>com.fastcheck.RequestUrl</mainClass> 
        </manifest> 
       </archive> 
      </configuration> 
     </plugin> 
+0

如果您調用'mvn assembly:assembly',則不會調用生命週期,這意味着什麼都不會從'src/main/resources'複製到'target/classes'文件夾中。問題是你需要通過'mvn clean package' – khmarbaise

+0

@khmarbaise來運行你的構建,但是如何通過maven pacakge生成可執行的jar? – jiafu

回答

0

的罐子,有依賴性組裝機制使用聲明瞭Maven依賴,而不是從什麼在你的資源目錄。如果你想使用更新版本的jar,在你的.pom文件中聲明一個更新的版本作爲依賴。

+0

我想在我的資源中使用新的配置,而不是依賴jar。 – jiafu

+0

我用你的maven配置生成jar文件,它適用於我。 你可以發佈整個maven pom文件嗎? – sendon1982

0

你應該綁定Maven的組裝插件來構建生命週期是這樣的:

<project> 
    [...] 
    <build> 
    [...] 
    <plugins> 
     <plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <version>2.4</version> 
     <configuration> 
      <descriptorRefs> 
      <descriptorRef>jar-with-dependencies</descriptorRef> 
      </descriptorRefs> 
     </configuration> 
     <executions> 
      <execution> 
      <id>make-assembly</id> <!-- this is used for inheritance merges --> 
      <phase>package</phase> <!-- bind to the packaging phase --> 
      <goals> 
       <goal>single</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
     [...] 
</project> 

將包生活cylce階段內執行maven-assembly-plugin