设置M2_REPO类路径

时间:2010-12-23 09:39:39

标签: java eclipse maven

我有几个与此相对应的问题。

  1. 什么是M2_REPO?
  2. 这个命令做什么用?

    mvn -Declipse.workspace=<your_workspace_location> eclipse:add-maven-repo

  3. 为什么我们需要做上述事?

3 个答案:

答案 0 :(得分:24)

  1. M2_REPO是一个变量,用于定义maven 2存储库在磁盘上的位置
  2. 这意味着:将M2_REPO的定义添加到定义eclipse工作区的XML文件
  3. 如果需要,您可以手动执行相同的操作。这就是我个人所做的。只需转到Window / Preferences,然后选择Java / Build Path / Classpath Variables。一旦你做到了,你可以享受maven与eclipse的集成。每次向pom.xml添加新依赖项时,请运行

    mvn eclipse:eclipse

  4. 并刷新工作区,将所有新库放入项目的类路径中。

    修改

    这个答案写于5年前。现在任何eclipse发行版都有maven插件,所以eclipse可以直接打开maven项目。您添加到pom.xml的每个依赖项都会自动下载,并且几乎可以立即使用。

答案 1 :(得分:6)

转到Windows-&gt;偏好 - &gt; Java - &gt;构建路径 - &gt;类路径变量 - &gt;新增并添加以下内容;

名称= M2_REPO(或您为Maven存储库提供的名称) Path = C:\ Users \ Administrator.m2 \ repository(我的保存在这里)

答案 2 :(得分:1)

不,您不希望所有maven工件散布在eclipse项目/包资源管理器中的Libraries文件夹中。

你希望所有的maven工件都很好地包装在

的一个子文件夹下
  

Java资源&gt;图书馆&gt; Maven依赖

就像在gd'old时代一样。

在完成其余答案中建议的所有内容之后,您所获得的所有内容仍然是pkg / prj资源管理器顶级列表中的所有maven文物,原因是您刚刚升级到最新最好的Eclipse版本,以及你所拥有的m2eclipse插件版本还没有与Eclipse版本竞争。

也不希望在每次添加新的maven依赖项时运行mvn eclipse:eclipse或eclipse:config ..这完全违背了maven的意思。

解决方法

虽然m2eclipse在你打屁股的新日食版本的黑暗中摸索着,

  1. 保存您当前的.classpath。

  2. 用POME.C(普通的旧maven eclipse .classpath)替换你的eclipse .classpath: http://code.google.com/p/synthfuljava/source/browse/apps/durian/.classpath

  3. 请记住将java版本更改为您的版本。

  4. 请记住添加您在orig .classpath中找到的所有自定义非maven路径。

  5. 现在,做一个好公民,并为这个eclipse版本提交一个m2eclipse错误(如果我还没有),告诉他们m2eclipse没有构建good'ol POME.C,解释了如何可爱和方便POME.C。

  6. 但是由于googlecode这个八月(这是痛苦,谷歌)消失了,这里是文件的正文。

    <?xml version="1.0" encoding="UTF-8"?>
    <classpath>
      <classpathentry kind="src" output="target/classes" path="src/main/java">
        <attributes>
          <attribute name="optional" value="true"/>
          <attribute name="maven.pomderived" value="true"/>
        </attributes>
      </classpathentry>
      <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
        <attributes>
          <attribute name="maven.pomderived" value="true"/>
        </attributes>
      </classpathentry>
      <classpathentry kind="src" output="target/test-classes" path="src/test/java">
        <attributes>
          <attribute name="optional" value="true"/>
          <attribute name="maven.pomderived" value="true"/>
        </attributes>
      </classpathentry>
      <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
        <attributes>
          <attribute name="maven.pomderived" value="true"/>
          <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
        </attributes>
      </classpathentry>
      <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7">
        <attributes>
          <attribute name="maven.pomderived" value="true"/>
        </attributes>
      </classpathentry>
      <classpathentry kind="output" path="target/classes"/>
    </classpath>