ฉันจะแยกบางโฟลเดอร์ออกจากโปรเจ็กต์ Eclipse ของฉันได้อย่างไร


86

ฉันกำลังเพิ่มโปรเจ็กต์ eclipse ในโค้ดเบสที่มีอยู่ของเราและฉันต้องการทราบว่ามีวิธียกเว้นบางไดเร็กทอรีไม่ให้รับคราสหรือไม่? เหตุผลก็คือเรามีไดเร็กทอรี "บุคคลที่สาม" ขนาดใหญ่ในที่เก็บของเราซึ่งไม่สามารถอยู่ในโปรเจ็กต์สำหรับปลั๊กอินการเขียนโปรแกรมคู่ที่เราใช้เพื่อให้สามารถซิงค์ได้อย่างมีประสิทธิภาพ

เบาะแสใด ๆ ?


1
เนื่องจากมันเกี่ยวข้องกันโปรดดูที่นี่: webtrafficexchange.com/…โดยคลิกขวาที่โฟลเดอร์คลิก Properties และทำเครื่องหมายที่ช่อง "Derived" คุณสามารถเก็บไฟล์ของคุณเป็นไฟล์ต้นฉบับได้ แต่จะแยกออกจากการค้นหาไฟล์!
Andrew

คำตอบ:


16

ตัวกรองจะซ่อนทรัพยากรไม่ให้มองเห็น แต่ยังอยู่ในโครงการ หากคุณสร้างโครงการในตำแหน่งอื่นคุณสามารถสร้างทรัพยากรที่เชื่อมโยงไปยังโฟลเดอร์ที่คุณต้องการรวมไว้ในโครงการของคุณ

สำหรับการอ้างอิงผมโพสต์คำตอบที่อธิบายถึงวิธีการใช้ทรัพยากรที่เชื่อมโยงในรายละเอียดเพิ่มเติมอีก


Rich: นี่เป็นแนวทางเริ่มต้นของฉัน แต่ปัญหาที่ฉันพบคือฉันไม่สามารถสร้างทรัพยากรให้สัมพันธ์กับโครงการได้: เส้นทางทั้งหมดเป็นแบบฮาร์ดโค้ด นี่เป็นปัญหาเพราะฉันต้องผูกมัดโครงการกับ SCM ของเรา มีความคิดอย่างไรในการแก้ปัญหานั้น?
jkp

ฉันได้เพิ่มลิงก์ไปยังคำตอบอื่นที่อธิบายรายละเอียดเพิ่มเติมนี้ คุณสามารถใช้ตัวแปรบนเส้นทางหากโครงการอยู่ในพื้นที่ทำงานคุณสามารถใช้ WORKSPACE_ROOT
Rich Seller

ยอดเยี่ยม. ฉันรู้เกี่ยวกับตัวแปร แต่ไม่สามารถทำให้มันทำงานได้เร็วกว่านี้ ด้วยสิ่งนี้ฉันควรจะไปได้ดี คำตอบที่ดี: สิ่งที่ฉันกำลังมองหา
jkp

197

มีวิธีทำอย่างตรงไปตรงมา:

  1. คลิกขวาที่โฟลเดอร์โครงการในโครงสร้าง Project Explorer และไปที่ "Properties"
  2. ทรัพยากร -> ตัวกรองทรัพยากร
  3. เพิ่มตัวกรองการยกเว้นสำหรับไฟล์ / โฟลเดอร์ได้มากเท่าที่คุณต้องการ

ปล. หากโครงสร้างโครงการของคุณไม่ได้รับการอัปเดตโดยอัตโนมัติคุณอาจต้องกด F5 ในขณะที่มีอินพุตโฟกัสในหน้าต่าง Project Explorer


8
นี่น่าจะเป็นคำตอบ! นอกจากนี้ยังใช้ได้กับโปรเจ็กต์ C ++ โดยใช้โฟลเดอร์ที่เชื่อมโยง
void.pointer

รบกวนโพสต์สิ่งที่จะเขียนลงในไฟล์. project ได้ไหม? คราสของฉันไม่สามารถบันทึกการเปลี่ยนแปลงนั้นเป็นไฟล์นี้ได้ดังนั้นฉันจะต้องเขียนด้วยตนเอง
เพื่อน

2
ขอบคุณสำหรับคำตอบนี้และยังมีวิธีใดบ้างที่จะแยกออกจากบิลด์ แต่ยังคงปล่อยให้พวกเขาเชื่อฟังและแสดงใน Project Explorer หรือไม่
Movsar Bekaev

6

ได้คุณสามารถวางตัวกรองที่กำหนดเองในโครงการของคุณได้ ในมุมมอง Project Explorer ของคุณควรมีลูกศรชี้ลงสีขาวใกล้ด้านบนของแผงข้างแท็บ Package Explorer คลิกและไปที่ตัวกรอง จากนั้นคุณสามารถระบุรูปแบบโฟลเดอร์บางอย่างที่คุณไม่ต้องการให้ตรวจพบโดยทำเครื่องหมายในช่องถัดจากรูปแบบตัวกรองชื่อ ในกรณีนี้ฉันจะใส่ชื่อของไลบรารีของบุคคลที่สาม


1
Alberto: ขอบคุณสำหรับตัวชี้ฉันไม่รู้เรื่องนี้เลย ปัญหาเดียวคือฉันไม่สามารถหาวิธียกเว้นทั้งโฟลเดอร์ได้เลย และตามที่ Rich ชี้ให้เห็นพวกเขาจะยังคงอยู่ในโครงการซึ่งจะเป็นปัญหาสำหรับเรา (ฉันเดาว่าปลั๊กอินจะพยายามซิงค์)
jkp

สำหรับฉันดูเหมือนว่านี่เป็นคำตอบเดียวที่ไม่ขึ้นกับภาษา คำแนะนำอื่น ๆ ไม่มีในโครงการที่ใช้ Python ของฉัน
dbn

Eclipse ซ่อนโฟลเดอร์ไว้ แต่ยังรวมอยู่ในโครงสร้าง
Amir Uval

1

วิธีที่ฉันทำมาตลอดคือตรวจสอบโครงการในฐานะเพื่อนร่วมงานอย่างชัดเจน เช่น:

~ / myworkspace / goodproject
~ / myworkspace / 3rdparty

จากนั้นนำเข้าเฉพาะ "goodproject" เข้าสู่คราส หาก "บุคคลที่ 3" เป็นไดเรกทอรีย่อยของโครงการที่ดีคุณสามารถปลอมแปลงได้ ... ตัวอย่างเช่นโครงการ svn ของคุณมีลักษณะดังนี้:

โครงการ/
       src /
          หลัก/
          บุคคลที่ 3/

คุณสามารถสร้างโปรเจ็กต์ / src / แบบโลคัลจากนั้นเช็คเอาต์เฉพาะไดเร็กทอรี "main" และให้ eclipse อาศัยเวอร์ชันแพ็กเกจ (เช่นชี้ไปที่ jar หากโปรเจ็กต์ของคุณเป็น java)


1

หากคุณต้องการเพิ่มตัวกรองภายในไฟล์. projectโดยตรงนี่คือกฎบางประการ:

    <type>6</type> <!-- exclude all, files -->
    <type>5</type> <!-- include only, files -->
    <type>13</type> <!-- include only, files and folders -->
    <type>26</type><!-- exclude all, folders, all children -->

    <arguments>1.0-name-matches-false-false-xyz</arguments> <!-- case sensitive=false, regular expression=false, something named=xyz -->
    <arguments>1.0-name-matches-true-false-EEE</arguments> <!-- case sensitive = true, regular expression = false, something named=EEE -->
    <arguments>1.0-name-matches-false-false-www</arguments> <!--case sensitive=false, regular expression = false, something named=www -->

หนึ่งส่วน. project filter เช่น:

    <filteredResources>
        <filter>
            <id>1567020347706</id>
            <name></name>
            <type>6</type> <!-- exclude all, files -->
            <matcher>
                <id>org.eclipse.ui.ide.multiFilter</id>
                <arguments>1.0-name-matches-false-false-abc</arguments>
            </matcher>
        </filter>
        <filter>
            <id>1567020347708</id>
            <name></name>
            <type>5</type> <!-- include only, files -->
            <matcher>
                <id>org.eclipse.ui.ide.multiFilter</id>
                <arguments>1.0-name-matches-false-false-xyz</arguments> <!-- case sensitive=false, regular expression=false -->
            </matcher>
        </filter>
        <filter>
            <id>1567020347711</id>
            <name></name>
            <type>13</type>
            <matcher>
                <id>org.eclipse.ui.ide.multiFilter</id>
                <arguments>1.0-name-matches-false-false-mno</arguments>
            </matcher>
        </filter>
        <filter>
            <id>1567020347713</id>
            <name></name>
            <type>26</type><!-- exclude all, folders, all children -->
            <matcher>
                <id>org.eclipse.ui.ide.multiFilter</id>
                <arguments>1.0-name-matches-true-false-EEE</arguments> <!-- case sensitive = true, regular expression = false -->
            </matcher>
        </filter>
        <filter>
            <id>1567020347716</id>
            <name></name>
            <type>26</type> <!-- exclude all, folders, all children -->
            <matcher>
                <id>org.eclipse.ui.ide.multiFilter</id>
                <arguments>1.0-name-matches-false-false-www</arguments> <!-- case sensitive = false, regular expression = false -->
            </matcher>
        </filter>
    </filteredResources>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.