2012-08-02 24 views
2

我有一個maven項目,我已經安裝了m2eclipse。當我構建項目時,src/main/resources中的文件不會被複制到target/classes文件夾中。 任何幫助是高度讚賞。m2eclipse不復制src/main/resources到目標

+3

你可以請你發佈你的pom.xml,特別是生成部分 – itshorty 2012-08-02 10:27:11

+1

告訴我們你的包裝樣式,並看看這個POM是否有一個父資源目錄可能已被重新定義。 – 2012-08-02 10:35:46

+0

@Arturs Licis:包裝風格是罐子,我沒有父母的包裝。 – 2012-08-02 10:49:13

回答

2

讀你什麼時候資源被複制的所有意見後,當他們不這樣做(即,直到Eclipse構建被調用一切工作正常),它很可能是maven2Builder被禁用。你可以使用maven2Nature,它很好地配置你的類路徑,但是如果你禁用了maven2Builder,只有源代碼將被編譯並複製到target/classes(或者你的.classpath中配置的任何東西)。

考慮一個非常簡單的演示項目配置(.project文件在Eclipse項目的根):

<?xml version="1.0" encoding="UTF-8"?> 
<projectDescription> 
    <name>m2demo</name> 
    <comment></comment> 
    <projects> 
    </projects> 
    <buildSpec> 
     <buildCommand> 
      <name>org.eclipse.jdt.core.javabuilder</name> 
      <arguments> 
      </arguments> 
     </buildCommand> 
     <!-- 
     <buildCommand> 
      <name>org.eclipse.m2e.core.maven2Builder</name> 
      <arguments> 
      </arguments> 
     </buildCommand> 
     --> 
    </buildSpec> 
    <natures> 
     <nature>org.eclipse.jdt.core.javanature</nature> 
     <nature>org.eclipse.m2e.core.maven2Nature</nature> 
    </natures> 
</projectDescription> 

在這個例子中,我有評論maven2Builder導致正是你所得到的是相同的行爲。

我通常喜歡看到實際的.project.classpath文件內容,但它都可以通過項目屬性進行訪問。你會在項目屬性中找到'Builders'部分,並且應該有'Maven Project Builder'複選框項目。

2

如果資源未被複制,可能是因爲「資源」未正確定義。您需要向Maven指出資源是什麼。

<build> 
    ... 
    <resources> 
     <resource> 
      <directory>src/main/resources</directory> 
      <filtering>true</filtering> 
     </resource> 
     <!-- you can define here more than one resource --> 
    </resources> 
    ... 
</build> 
+0

謝謝。我應該把它放在我的POM中? – 2012-08-02 10:31:05

+1

默認複製它們的許多包裝樣式,包括默認的'jar'。 – 2012-08-02 10:31:11

+0

AS @DuncanJones指出,默認情況下已完成,但應該檢查資源配置,因爲當前配置可能導致問題。 – jddsantaella 2012-08-02 10:36:08

1

在我的項目中,我觀察到即使我在pom.xml中指定了資源標記並配置了maven2Builder,資源仍然不會被複制。爲了解決這個問題我手動編輯當初是

<classpathentry including="**/*.java" kind="src" output="target/classes" path="java_source"> 
    <attributes> 
     <attribute name="optional" value="true"/> 
     <attribute name="maven.pomderived" value="true"/> 
    </attributes> 
</classpathentry> 

<classpathentry kind="src" output="target/classes" path="java_source"> 
    <attributes> 
     <attribute name="optional" value="true"/> 
     <attribute name="maven.pomderived" value="true"/> 
    </attributes> 
</classpathentry> 

基本上,你必須刪除including="**/*.java"非.classpath文件(它存在於你的項目的頂層)。類文件被複制過來。

+0

這樣的服務。我只需要將「路徑」屬性更改爲「src」。謝謝! – Mike 2016-04-28 13:57:50

1

對我來說,這個問題是一個明顯的問題...... Project-> Build Automatically被關閉。構建時調用複製資源的m2e構建器。打開自動構建或執行項目 - >全部構建(ctrl-b)將已更改的資源部署到目標/類。

+0

我有類似的問題,並嘗試手動開始構建,清理,禁用/重新啓用maven性質。我的資源文件夾中有10個XML文件。其中兩個,從來沒有被複制到目標/課程。如果我重命名它們,它們會被複制。如果我將它們重命名爲原始文件名,它們不會被複制。 – 2014-08-07 13:19:27

0

我有這個相同的問題,並從項目中刪除了maven的性質,並將其添加回來。然後我的資源文件被正確複製。

0

我也遇到了這個問題,它原來是我不小心排除複印資源與M2E生命週期映射過濾器:

<build> 
    <pluginManagement> 
     <plugins> 
     <plugin> 
      <groupId>org.eclipse.m2e</groupId> 
      <artifactId>lifecycle-mapping</artifactId> 
      <version>1.0.0</version> 
      <configuration> 
      <lifecycleMappingMetadata> 
       <pluginExecutions> 
       <pluginExecution> 
        <pluginExecutionFilter> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-resources-plugin</artifactId> 
        <versionRange>[1.0,)</versionRange> 
        <goals> 
         <goal>resources</goal> 
         <goal>testResources</goal> 
        </goals> 
        </pluginExecutionFilter> 
        <action> 
        <ignore /> 
        </action> 

的「行動」應爲「執行」,而不是...

相關問題