有没有办法在Eclipse 3中隐藏Maven 2“target /”文件夹?

时间:2008-11-12 10:15:04

标签: java eclipse maven-2

我在Eclipse 3.3.2中使用maven 2.0.9。

我习惯于每天用mvn clean install启动一次新构建。 然后,如果我刷新我的Eclipse项目,它将被来自Maven的目标目录的文件“污染”。

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

有没有办法避免Eclipse查看此文件夹?

12 个答案:

答案 0 :(得分:57)

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

答案 1 :(得分:25)

在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

答案 2 :(得分:14)

Indigo解决方案[SR2]

Project Explorer&gt; Customize View&gt; Filters&gt; [*] Maven Build Folder

答案 3 :(得分:10)

我一直对这个问题很生气,我写了一个插件来解决它。你可以从以下地址获得源和罐子:

https://github.com/YA2O/Eclipse_Plugin_Target_Derivator

答案 4 :(得分:4)

为了解决这个问题,我这样做了:

  • 安装适用于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);
                }
            }
        }
    }
    

    答案 5 :(得分:3)

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

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

    答案 6 :(得分:3)

    偏好设置&gt;团队&gt;忽略资源

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

    答案 7 :(得分:2)

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

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

    答案 8 :(得分:2)

    我遇到了一些问题,因为这里的某些解决方案仅适用于某些观点,所以我做了一个插图摘要。

    在Eclipse 4.4(Luna)中测试过,应该像3.7中的其他答案一样工作。

    Package Explorer

    Package Explorer查看菜单Filters...→选中Name filter patterns并输入target

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

    Package Explorer Menu Package Explorer Dialog

    Project Explorer

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

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

    Project Explorer Menu Project Explorer Dialog

    答案 9 :(得分:1)

    您是否正在使用Eclipse的Maven插件?

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

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

    Maven 2 Eclipse

    答案 10 :(得分:1)

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

    基本上它会将'target'添加到子文件夹以将文件夹直接排除到.project文件。运行此脚本后,如果将项目导入eclipse,则可以看到设置'Project' - &gt;'Properties' - &gt;'Resource' - &gt;'Resource Filters'。在此之前,每当我运行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>/' {} \;
    
    }
    

    答案 11 :(得分:0)

    当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,但它没有解决这个问题。