我有一个maven项目,我安装了m2eclipse。当我构建项目时,src / main / resources中的文件不会被复制到target / classes文件夹中。 任何帮助都非常感谢。
答案 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的“更新项目...”功能来解决。
这个缺陷以前从未(公开地)出现在我身上,到目前为止,我不知道其背后是什么。 如果缺陷在运行时仅导致细微的错误,那肯定会令人困惑(我花了相当长的时间进行跟踪)。