【问题标题】:Is there a way to hide Maven 2 "target/" folder in Eclipse 3?有没有办法在 Eclipse 3 中隐藏 Maven 2“target/”文件夹?
【发布时间】:2010-09-21 23:03:22
【问题描述】:

我在 Eclipse 3.3.2 中使用 maven 2.0.9。

我习惯于每天通过 mvn clean install 启动一次新版本。 然后,如果我刷新我的 Eclipse 项目,它将被 Maven 的 target 目录中的文件“污染”。

在执行搜索,通过“开放资源”获取资源等时非常烦人。

有没有办法避免 Eclipse 在这个文件夹中查找?

【问题讨论】:

    标签: java eclipse maven-2


    【解决方案1】:

    你在使用 Eclipse 的 Maven 插件吗?

    我想它会为你隐藏一些“污染”。

    它还允许您在 Eclipse 中执行构建 - 这意味着它会同时为您刷新项目视图。

    Maven 2 Eclipse

    【讨论】:

    • 不,我目前没有使用 Eclipse 的 maven 插件,但我会尝试。
    • 我正在使用它,但它不会隐藏目标文件夹的内容。 “派生”技术对我有用。
    【解决方案2】:

    maven 插件不会隐藏目标目录。但是,它确实使用 maven 目标文件夹来配置 eclipse。所以eclipse使用了target/classes和target/test-classes,eclipse过滤掉了这些文件夹。这是由“mvn eclipse:eclipse”以及 m2eclipse 插件完成的。剩下可见的是目标目录中除了这两个文件夹之外的所有内容(例如生成的jar文件)。

    您可以为包资源管理器创建过滤器,但这不会影响“开放资源”。

    【讨论】:

      【解决方案3】:

      您是否尝试过配置“Java 元素过滤器”选项对话框(通过项目浏览器的右上角箭头)?

      如果需要,您可以定义自己的ViewerFilter

      【讨论】:

      • 几周前我试过了,但没能得到我想要的。
      【解决方案4】:

      右键单击要忽略的文件夹,打开“属性”对话框,选择“资源”选项卡并选中“派生”框

      【讨论】:

      • 这种方法的唯一问题是,如果你曾经调用过 maven eclipse:clean,你必须重新应用你的项目更改。 =/
      • 右键单击文件夹,然后选择属性,然后选中“派生”。至少,这就是你与伽利略的关系。
      • 如果它似乎不起作用,请确保删除“开放资源”对话框中的所有历史记录项...
      • @paulgreg :请将此答案标记为已接受。确认可以在 Eclipse Helios 3.6 SR2 上工作
      • doesn't 似乎对我有用,但是我不确定“开放资源对话框”是什么或在哪里。我已尝试清理项目,但我仍然收到有关不必要演员表的警告...
      【解决方案5】:

      首选项 > 团队 > 忽略的资源

      添加“目标”,然后重新启动 Eclipse。

      【讨论】:

      • 这只告诉你的版本控制忽略它。对任何其他操作没有明显影响。
      • 从团队同步视图中删除它,其他人没有。至少不适合我。
      • 运行开普勒对我来说就像一个魅力。
      • 这个问题是它忽略了任何地方称为“目标”的任何目录。这意味着 org/msytuff/target 下的任何源都将被忽略。好吧,也许你不应该这样称呼,但是当我使用其他人的代码时,我不能抓住机会......
      【解决方案6】:

      在 Maven 中重新配置“clean”不删除目标目录:

      <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <configuration>
              <excludeDefaultDirectories>true</excludeDefaultDirectories>
              <filesets>
                  <!-- delete directories that will be generated when you 
                       start the develpment server/client in eclipse  
                  -->
                  <fileset>
                      <directory>target</directory>
                      <includes>
                          <include>**/*</include>
                      </includes>
                  </fileset>
              </filesets>
          </configuration>
      </plugin>
      

      (位于:http://maven.40175.n5.nabble.com/how-to-NOT-delete-target-dir-td3389739.html#a3413930

      【讨论】:

      • 这完成了 Zack 的回答(投票最多)。如果没有此解决方法,该解决方案将毫无用处。效果很好。不幸的是,它必须为每个项目设置。
      • 非常感谢,这正是我所需要的!每次清理后都必须设置“派生”标志真是令人沮丧。
      • 谢谢。实际上,这应该是公认的答案,因为它解决了提问者的真正问题。不过应该注意的是, excludeDefaultDirectories 仅在 maven-clean-plugin 2.3 之后才可用:maven.apache.org/plugins/maven-clean-plugin/clean-mojo.html
      【解决方案7】:

      当 Eclipse 冻结时,查看进程活动,我可以看到它正在浏览我的所有目标、.hg 和 .git 目录。此外,这些目录也被复制到 Eclipse 的 bin 目录中。大量 CPU 和磁盘的使用无济于事。

      不清理目标目录不是可接受的解决方案。

      有一个使用 Monkey 脚本的解决方案 (http://maven.40175.n5.nabble.com/Eclipse-amp-target-directory-td72354.html),但该项目已关闭。

      我仍在寻找一种解决方案来告诉 Eclipse 忽略 Maven 目标目录以及 .hg 和 .git 目录。

      Eclipse 不断地看着那些是痛苦的。

      我也使用 m2eclipse,但它不能解决这个问题。

      【讨论】:

      【解决方案8】:

      为了解决这个问题,这是我所做的:

    • 为 Eclipse 安装 Groovy Monkey
    • 创建了一个 Bean Shell 脚本“UpdateMavenDerived_Beanshell.gm”以将任何名为 target 的目录标记为派生。
    • -----------在此处剪切脚本-------------

      /*
       * Menu: Find System Prints > Beanshell
       * Script-Path: /GroovyMonkeyScripts/monkey/UpdateMavenDerived_Beanshell.gm
       * Kudos: Bjorn Freeman-Benson & Ward Cunningham & James E. Ervin
       * License: EPL 1.0
       * LANG: Beanshell
       * DOM: http://groovy-monkey.sourceforge.net/update/plugins/net.sf.groovyMonkey.dom
       */
      out.println("Setting target directories to derived status.");
      var projects = workspace.getRoot().getProjects();
      for ( var i = 0; i < projects.length; i++) {
          var project = projects[i];
          if (project.isOpen()) {
              out.println("Project: " + project.getName());
              var members = project.members();
              for ( var j = 0; j < members.length; j++) {
                  if (members[j].getName().equals("target")) {
                      out.println("setting derived status on: "+ members[j].getFullPath());
                      members[j].setDerived(true);
                  }
              }
          }
      }
      

      【讨论】:

      • 这比 id 需要的复杂;) 但仍然不错
      【解决方案9】:

      如果您经常使用“mvn clean install”,使用资源过滤器看起来可以解决问题。

      基本上它会将“目标”添加到子文件夹以将文件夹直接排除到 .project 文件中。运行此脚本后,如果将项目导入 Eclipse,您可以看到设置“项目”->“属性”->“资源”->“资源过滤器”。在此之前,每当我运行 mvn clean install 时,eclipse 占用了我 50% 的 CPU,但现在它在构建项目时保持在 5% 以下。


      function eclipse-setup() {
           mvn eclipse:clean
           mvn eclipse:eclipse
           #maven target folders
           find . -name .project -exec sed -i.MSORG 's/<\/projectDescription>/<filteredResources> <filter> <id>1314376338264<\/id> <name><\/name> <type>26
      <\/type> <matcher> <id>org.eclipse.ui.ide.multiFilter<\/id> <arguments>1.0-name-matches-false-false-target<\/arguments> <\/matcher> <\/filter> <filt
      er> <id>1314387234341<\/id> <name><\/name> <type>6<\/type> <matcher> <id>org.eclipse.ui.ide.multiFilter<\/id> <arguments>1.0-name-matches-false-fals
      e-*.cache.html<\/arguments> <\/matcher> <\/filter> <\/filteredResources><\/projectDescription>/' {} \;
      
      }
      

      【讨论】:

        【解决方案10】:

        我对这个问题非常生气,我写了一个插件来解决它。您可以从以下位置获取源代码和 jar:

        https://github.com/YA2O/Eclipse_Plugin_Target_Derivator

        【讨论】:

        【解决方案11】:

        Indigo 解决方案 [SR2]

        Project Explorer > Customize View > Filters > [*] Maven Build Folder

        【讨论】:

          【解决方案12】:

          我遇到了一些问题,因为这里的一些解决方案只适用于某些视图,所以我做了一个图文并茂的总结。

          在 Eclipse 4.4 (Luna) 中测试,根据此处的其他答案,从 3.7 开始应该像这样工作。

          包资源管理器

          Package Explorer View MenuFilters... → 检查Name filter patterns 并输入target

          小心,这将隐藏所有名为 target 的文件夹和文件,而不仅仅是默认的 maven 构建目录! Project Explorer 视图有更好的选择,没有这个问题。

          项目浏览器

          Project Explorer View Menu → Custom View... → 搜索“maven”并检查Maven build folder

          选中此选项将隐藏项目 pom.xml 配置中定义的构建目录。

          【讨论】:

          • 不幸的是,这不会将其从开放资源 (ctrl+shift+r) 或开放类型(ctrl+shift+t) 菜单中删除,这使得键盘导航仍然很困难,但它确实适用于包浏览器视图
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-07-02
          • 1970-01-01
          • 1970-01-01
          • 2016-05-29
          • 2021-09-02
          相关资源
          最近更新 更多