2

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

4

7 回答 7

3

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

<build>
    ...
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
        <!-- you can define here more than one resource -->
    </resources>
    ...
 </build>
于 2012-08-02T10:28:51.647 回答
3

在阅读了有关何时复制资源以及何时不复制资源的所有评论之后(即,在调用 Eclipse 构建之前一切正常),maven2Builder很可能被禁用。您可以使用 maven2Nature 来巧妙地配置您的类路径,但是如果您禁用 maven2Builder,由于活动的 Java Builder ,只有源代码将被编译并复制到target/classes(或您在 .config 中配置的任何内容)。.classpath

考虑一个非常简单的演示项目配置(.projectEclipse 项目根目录中的文件):

<?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文件内容,但都可以通过 Project Properties 访问。您会在项目属性中找到“Builders”部分,并且应该有“Maven Project Builder”复选框项。

于 2012-08-02T14:03:44.647 回答
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"要复制的非 .class 文件。

于 2013-05-21T20:10:41.693 回答
1

对我来说,这个问题很明显...... Project-> Build Automatically 已关闭。复制资源的 m2e 构建器在构建时被调用。打开自动构建或执行 Project->Build All (ctrl-b) 以将更改的资源部署到目标/类。

于 2014-01-22T17:58:26.877 回答
1

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

于 2014-04-24T01:07:57.480 回答
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>

“行动”应该是“执行”而不是......

于 2014-09-19T10:16:00.167 回答
0

我遇到的问题是,虽然资源基本上存在于目标文件夹中,但我最近所做的某些更改在运行时不可用。

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

我以前从未(公开地)想到过这个缺陷,到目前为止,我不知道这背后的原因。如果缺陷在运行时只导致细微的错误,那肯定会令人费解(我花了很长时间才找到)。

于 2020-01-28T10:51:26.090 回答