我有一个maven项目,我正在研究Eclipse。
我使用maven eclipse:eclipse来生成类路径,但是......它永远不会在eclipse项目中添加类路径。我已经尝试了maven-eclipse-plugin,我已经尝试过M2Eclipse插件,但是无论我做什么都没关系,我无法让classpath条目开始工作。我有很多构建错误,甚至认为maven完美地构建了耳朵。
任何指导方针?
感谢您的回答!
更新:这是我的根类路径:
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="core/src/main/java"/>
<classpathentry excluding="**" kind="src" output="target/classes" path="core/src/main/resources"/>
<classpathentry kind="src" path="client/src/main/java"/>
<classpathentry kind="src" path="client/src/main/resources"/>
<classpathentry kind="src" path="junit_server/src/main/java"/>
<classpathentry kind="src" path="initializer/src/main/java"/>
<classpathentry kind="src" path="initializer/src/main/webapp"/>
<classpathentry kind="src" path="site/src/main/webapp"/>
<classpathentry kind="src" path="core/src/test/java"/>
<classpathentry kind="src" path="core/src/test/resources"/>
<classpathentry exported="true" kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry exported="true" kind="var" path="M2_REPO"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
UPDATE2:这是我的.project:
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>coreisp_back</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.m2e.core.maven2Nature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
答案 0 :(得分:16)
Maven Eclipse插件生成的设置与m2e / m2eclipse不兼容。如果你想一起使用Maven和Eclipse,最好的方法是删除maven eclipse插件生成的设置的任何修改,并使用m2e导入你的Maven项目。
答案 1 :(得分:7)
答案 2 :(得分:6)
您需要使用build-helper-maven-plugin将额外的源文件夹添加到pom.xml。 然后运行
mvn eclipse:清除日食:日食
例如这个pom.xml ..
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>mygroup</groupId>
<artifactId>artifact</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>artifact</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>client/src/main/java</source>
</sources>
</configuration>
</execution>
<execution>
<id>add-resource</id>
<phase>generate-resources</phase>
<goals>
<goal>add-resource</goal>
</goals>
<configuration>
<resources>
<resource>
<directory>client/src/main/resources</directory>
<targetPath>resources</targetPath>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
生成此.classpath
<classpath>
<classpathentry kind="src" path="src/test/java" output="target/test-classes" including="**/*.java"/>
<classpathentry kind="src" path="src/main/java" including="**/*.java"/>
<classpathentry kind="src" path="client/src/main/java" including="**/*.java"/>
<classpathentry kind="src" path="client/src/main/resources" excluding="**/*.java"/>
<classpathentry kind="output" path="target/classes"/>
<classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
</classpath>
确保文件夹存在,如果路径不正确,则不会添加。 在maven日志中查找。
[INFO]跳过不存在的resourceDirectory / tmp / artifact / src / main / resources
我的团队发现eclipse maven插件不稳定,选择通过maven创建我们的整个eclipse配置。
答案 3 :(得分:1)
这是依赖于m2eclipse。执行此操作时,所有依赖项都由maven / m2eclipse处理,因此.classpath变得非常小。
在项目架构方面,你想要每个maven pom有一个eclipse项目。 每个项目.classpath只包含源,JRE和maven注入:
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src/main/java"/>
<classpathentry kind="src" output="target/test-classes" path="src/test/java"/>
<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
(根据您的来源进行调整)。
我怀疑您的许多错误来自依赖项中的重复条目,因为您手动注入它们(其他.classpath条目)和maven。
您还需要验证m2eclipse中的本地工作区分辨率是否已启用(默认情况下应该启用)。
答案 4 :(得分:1)
默认情况下,mvn安装不会自动导入到eclipse中。 因此,从命令提示符运行mvn install之后。运行以下命令:
mvn eclipse:eclipse
这会将所有jar导入到您的eclipse项目中,并且还会更新类路径。
首次向POM添加新依赖项并执行mvn编译或安装时,需要执行上述命令。
答案 5 :(得分:1)
除了投票最多的答案之外,你仍然可能留下一个破碎的项目,没有'Maven Dependencies'(开普勒)和没有类路径解析。
在我的情况下,当第三方sdk更新自己时,我的本地maven存储库settings.xml被删除,在重新启动eclipse之后似乎清除了对该settings.xml文件的引用。
我将文件放回并在Maven中引用它&gt;安装&gt;全局设置:/home/andy/.m2/settings.xml,清理每个项目启动所有必要的类路径解析。只是分享。
对我来说,生成的文件看起来像:
<强>的.classpath 强>
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src/main/java"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
<强>的.project 强>
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>jemh-ao</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>
答案 6 :(得分:1)