簡體   English   中英

m2eclipse 不將 src/main/resources 復制到目標

[英]m2eclipse not copying src/main/resources to target

我有一個 Maven 項目並且我已經安裝了 m2eclipse。 當我構建項目時,src/main/resources 中的文件沒有被復制到 target/classes 文件夾中。 任何幫助都受到高度贊賞。

如果資源沒有被復制,可能是因為“資源”沒有正確定義。 您需要向 Maven 指明資源是什么。

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

在閱讀了您關於何時復制資源以及何時不復制的所有評論后(即,在調用 Eclipse 構建之前一切正常),很可能maven2Builder被禁用。 您可以使用 maven2Nature 巧妙地配置您的類路徑,但是如果您禁用 maven2Builder,由於活動的 Java Builder,只有源代碼將被編譯並復制到target/classes (或.classpath配置的任何內容)。

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

<?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”復選框項。

在我的項目中,我觀察到即使我在 pom.xml 中指定了資源標簽並配置了 maven2Builder,資源仍然沒有被復制。 為了解決這個問題,我手動編輯了 .classpath 文件(它存在於項目的頂層),它最初是

<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>

基本上,您必須刪除要復制的非 .class 文件的including="**/*.java"

對我來說,問題很明顯…… Project->Build Automatically 被關閉了。 復制資源的 m2e 構建器在構建時被調用。 打開自動構建或執行 Project->Build All (ctrl-b) 以將更改的資源部署到目標/類。

我遇到了同樣的問題,並從項目中刪除了 Maven 性質並將其添加回來。 然后我的資源文件被正確復制。

我也遇到了這個問題,結果我不小心排除了使用 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>

“動作”應該是“執行”而不是......

我遇到的問題是,雖然資源基本上存在於目標文件夾中,但我最近所做的某些更改在運行時不可用。

我可以通過執行 Maven 的“更新項目...”功能來解決它​​。

我以前從未(公開地)想到過這個缺陷,到目前為止我不知道這背后是什么。 如果缺陷在運行時導致細微的錯誤,那肯定會令人費解(我花了很長時間才找到)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM