m2eclipse不会将src / main / resources复制到目标

时间:2012-08-02 10:24:03

标签: java eclipse java-ee maven m2eclipse

我有一个maven项目,我安装了m2eclipse。当我构建项目时,src / main / resources中的文件不会被复制到target / classes文件夹中。 任何帮助都非常感谢。

7 个答案:

答案 0 :(得分:3)

如果未复制资源,可能因为“资源”未正确定义。您需要向Maven表明资源是什么。

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

答案 1 :(得分:3)

在阅读了有关何时复制资源以及何时不复制资源的所有评论之后(即,在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文件内容,但所有内容都可以通过“项目属性”访问。您将在项目属性中找到“构建器”部分,并且应该有“Maven项目构建器”复选框项。

答案 2 :(得分:1)

在我的项目中,我观察到即使我在pom.xml中指定了resources标记并配置了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"

答案 3 :(得分:1)

对我来说,问题显而易见......项目 - &gt;自动构建已关闭。复制资源的m2e构建器在构建时调用。打开自动构建或执行项目 - >全部构建(ctrl-b)以将更改的资源部署到目标/类。

答案 4 :(得分:1)

我也遇到了问题,结果发现我不小心使用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>

&#34;行动&#34;应该&#34;执行&#34;相反......

答案 5 :(得分:0)

我遇到了同样的问题,并从项目中移除了maven性质并将其添加回来。然后我的资源文件被正确复制。

答案 6 :(得分:0)

我遇到了这样的问题:虽然目标文件夹中实际上存在资源 ,但是我最近进行的某些更改在运行时不可用。

我可以通过执行Maven的“更新项目...”功能来解决。

这个缺陷以前从未(公开地)出现在我身上,到目前为止,我不知道其背后是什么。 如果缺陷在运行时仅导致细微的错误,那肯定会令人困惑(我花了相当长的时间进行跟踪)。