JavaRush /จาวาบล็อก /Random-TH /เริ่มต้นใช้งาน Maven Alfresco SDK ตอนที่ 2
CynepHy6
ระดับ
Великий Новгород

เริ่มต้นใช้งาน Maven Alfresco SDK ตอนที่ 2

เผยแพร่ในกลุ่ม

เริ่มต้นใช้งาน Alfresco Maven SDK

Jeff Potts มกราคม 2014 <= ​​​​ส่วนที่ 1
  • เราทำงานร่วมกับโครงการของคุณใน IDE
  • ทำความเข้าใจกับโครงสร้างโครงการ
  • การสร้างโปรเจ็กต์ที่ปรับให้เหมาะกับการเข้าถึงแบบแชร์
  • การพึ่งพาโครงการทั่วไป
  • เป้าหมายสงคราม
  • มาลองทำสิ่งนี้กัน: การสร้างโครงการ Share โดยใช้ต้นแบบ
  • ทำความเข้าใจกับโครงสร้างไดเรกทอรี Share Access
  • เปิดตัวการทดสอบภายในบน Share
  • การจัดการการพึ่งพา
  • หัวข้ออื่นสำหรับการค้นคว้าอิสระ
  • จะหาข้อมูลเพิ่มเติมได้ที่ไหน

เราทำงานร่วมกับโครงการของคุณใน IDE

สิ่งนี้ไม่จำเป็น แต่หลายคนชอบที่จะทำงานใน IDE เมื่อตั้งค่า Alfresco IDE ใดๆ ก็ตามจะทำเช่นนี้ แต่หนึ่งในความนิยมมากที่สุดคือ Eclipse มาดูกันว่ามันทำงานอย่างไร
ฉันใช้ Eclipse Java EE IDE เวอร์ชัน Kepler สำหรับนักพัฒนาเว็บ มันมาพร้อมกับการรองรับ Maven ในตัว
หากต้องการเปิดโครงการที่สร้างขึ้น ให้ทำดังต่อไปนี้:
  • ไฟล์, นำเข้า, Maven, โครงการ Maven ที่มีอยู่ คลิกถัดไป
    เริ่มต้นใช้งาน Maven Alfresco SDK ตอนที่ 2 - 1
  • ระบุไดเร็กทอรีที่มีไดเร็กทอรี someco-mvn-tutorial-repo Eclipse จะตรวจสอบไดเร็กทอรีนี้และแสดงโปรเจ็กต์ของคุณในรายการโปรเจ็กต์ ตรวจสอบให้แน่ใจว่าได้เลือกช่องทำเครื่องหมายถัดจากชื่อโครงการแล้วคลิกถัดไป
    เริ่มต้นใช้งาน Maven Alfresco SDK ตอนที่ 2 - 2
  • Eclipse จะแสดงการตั้งค่าแผงปลั๊กอิน Maven คุณสามารถเพิกเฉยได้อย่างปลอดภัยในตอนนี้ คลิกเสร็จสิ้น
    เริ่มต้นใช้งาน Maven Alfresco SDK ตอนที่ 2 - 3
ตอนนี้โปรเจ็กต์ถูกอิมพอร์ตไปยังเวิร์กสเปซ Eclipse ของคุณแล้ว
ในแผงเครื่องหมาย คุณจะเห็นรายการปัญหาของ Maven ที่ระบุว่า "การดำเนินการปลั๊กอินไม่ครอบคลุมโดยการกำหนดค่าวงจรการใช้งาน"
Maven มีปัญหากับปลั๊กอิน Maven มีปัญหากับปลั๊กอิน (set-version)
วิธีแก้ไข:
  1. คลิกขวาที่ข้อผิดพลาดและเลือก "Quick Fix"
  2. การเลือก "ทำเครื่องหมายเวอร์ชันชุดเป้าหมายอย่างถาวรใน pom.xml ว่าถูกละเว้นใน Eclipse build" พร้อม.
  3. เลือกตำแหน่งที่ POM ของคุณตั้งอยู่ (ของฉันคือ com.someco : someco-mvn-tutorial-repo : 1.0-SNAPSHOT) และคลิก ตกลง
หลังจากสร้างโปรเจ็กต์ใหม่ คุณอาจพบปัญหาล่าสุดประการหนึ่ง "การกำหนดค่าโปรเจ็กต์ไม่อัปเดตด้วย pom.xml" สำหรับการแก้ไข:
  1. คลิกขวาที่โปรเจ็กต์แล้วเลือก Maven อัปเดตโปรเจ็กต์
  2. ตรวจสอบให้แน่ใจว่าได้เลือกโครงการแล้ว และคลิกตกลง
ตอนนี้ Eclipse น่าจะพอใจแล้ว และข้อผิดพลาดเพียงอย่างเดียวน่าจะเกิดจากคำเตือนเกี่ยวกับการอิมพอร์ต Java ที่ไม่ได้ใช้บางส่วน

ทำความเข้าใจกับโครงสร้างโครงการ

โครงสร้างไดเร็กทอรีของโปรเจ็กต์ของคุณน่าสำรวจใน IDE ของคุณดีกว่าเล็กน้อย มาดูกันว่าเรามีอะไรบ้างที่นี่
  • pom.xmlในรูทของโปรเจ็กต์ คุณจะเห็น pom.xml มันบอกทุกสิ่งที่ Maven จำเป็นต้องรู้เกี่ยวกับโปรเจ็กต์ของคุณ คุณจำการตั้งค่าบางอย่างที่คุณลืมเมื่อสร้างโปรเจ็กต์จากเทมเพลตหรือไม่ คุณสามารถเปลี่ยนแปลงการตั้งค่าได้ที่นี่ ตัวอย่างเช่น เวอร์ชัน 1.1.1 ของต้นแบบช่วยให้คุณสามารถทำงานกับ Alfresco Community Edition เวอร์ชัน 4.2.e ได้ หากคุณต้องการทำงานกับเวอร์ชันอื่น - เพียงแค่เปลี่ยนคุณสมบัติบางอย่างแล้วบอกให้ Maven อัปเดตคุณสมบัติเหล่านั้น แล้วมันจะจัดการส่วนที่เหลือเอง
  • src/main/javaนี่คือที่ที่คุณควรสร้างแพ็คเกจของคุณเองเพื่อจัดระเบียบโค้ด Java ของคุณ สิ่งต่างๆ เช่น คลาสตัวดำเนินการแบบกำหนดเอง พฤติกรรมแบบกำหนดเอง ตัวควบคุม Java สำหรับสคริปต์เว็บอยู่ที่นี่แล้ว หากคุณไม่ทราบว่าทั้งหมดนี้คืออะไร ไม่ต้องกังวล มีบทช่วยสอนให้ใช้งานที่นี่ ไฟล์เหล่านี้จะถูกวางไว้ใน JAR ในที่สุด เมื่อติด ตั้งAMP ใน Alfresco WAR แล้ว JAR จะอยู่ภายในWEB-INF/lib
  • src/testทุกอย่างภายใน src/test เกี่ยวข้องกับการทดสอบ หน่วยการทดสอบตัวเองอยู่ในsrc/test/ java ทรัพยากรใดๆ ที่จำเป็นสำหรับคลาสเหล่านี้จะอยู่ใน src/test/resources ภายในsrc/test/properties/localคุณจะเห็น ไฟล์ alfresco-global.properties หากคุณรู้อะไรเกี่ยวกับ Alfresco อยู่แล้ว คุณจะรู้ว่ามันถูกใช้เพื่อกำหนดค่าเซิร์ฟเวอร์ Alfresco ในกรณีนี้ ใช้เพื่อรันเซิร์ฟเวอร์แบบฝังตัวเพื่อการทดสอบเท่านั้น
  • src/main/ampทุกอย่างอื่นอยู่ในส่วนนี้ของโปรเจ็กต์ โครงสร้าง AMP ได้รับการบันทึกไว้อย่างดีจนฉันไม่ต้องการทำซ้ำที่นี่ ฉันจะชี้ให้เห็นประเด็นหลัก:
    • ไฟล์module.propertiesจะบอก Alfresco ถึงสิ่งที่จำเป็นต้องรู้เกี่ยวกับ AMP เช่น ID, เวอร์ชัน, เวอร์ชันต่ำสุดและสูงสุดของ Alfresco ที่จำเป็นสำหรับการเรียกใช้ AMP และ AMP อื่นๆ ที่มีการขึ้นต่อกันแบบเดียวกัน
    • ไดเรกทอรีconfig/alfresco/module/someco-mvn-tutorial-repoคือหัวใจของ AMP ตำแหน่งที่คุณจะวางการกำหนดค่าไฟล์ Spring XML โมเดลเนื้อหาของไฟล์ XML และการกำหนดค่าอินเทอร์เฟซผู้ใช้ ดังที่คุณจะเห็นในภายหลัง ฉันชอบที่จะแยกไดเรกทอรีย่อยสำหรับแต่ละสิ่งเหล่านี้
    • หากโมดูลของคุณมีเว็บสคริปต์หรือเวิร์กโฟลว์ จะไม่มีอยู่ในไดเร็กทอรีโมดูล แต่จะอยู่ในconfig/alfresco/extension/templates/webscripts และ config/alfresco/extension/ workflows
    • โมดูลของคุณอาจมีทรัพยากรไคลเอนต์ที่ต้องปรับใช้กับรูทของเว็บแอปพลิเคชัน โดยจะอยู่ในsrc/main/amp/webในไดเร็กทอรี css, jsp, scripts และ image
คุณควรตรวจสอบโปรเจ็กต์ทั้งหมดนี้ในการควบคุมแหล่งที่มา คุณอาจต้องการกำหนดค่าไคลเอ็นต์การควบคุมเวอร์ชันของคุณให้ละเว้นไดเร็กทอรีเป้าหมายและไดเร็กทอรี alf_data_dev
ตอนนี้คุณเข้าใจวิธีสร้างโปรเจ็กต์สำหรับการตั้งค่าระดับพื้นที่เก็บข้อมูลแล้ว มาดูระดับแชร์กันดีกว่า ในส่วนหนึ่งของสิ่งนี้ ฉันจะแสดงตัวเลือกอื่นสำหรับการสร้างโปรเจ็กต์โดยไม่ต้องออกจาก Eclipse

การสร้างโปรเจ็กต์ที่ปรับให้เหมาะกับการเข้าถึงแบบแชร์

ประการแรก คุณต้องเข้าใจว่าโครงสร้างของโปรเจ็กต์ที่สร้างขึ้นในระดับพื้นที่เก็บข้อมูลนั้นเหมือนกันทุกประการกับโปรเจ็กต์สำหรับเลเยอร์การเข้าถึงแบบแชร์ที่ปรับเปลี่ยนแล้ว ในอนาคตของ Alfresco Maven SDK มีสองสิ่งที่ทำให้โปรเจ็กต์ Share แตกต่าง: การขึ้นต่อกันของโปรเจ็กต์และ AMP WAR จะถูกรวมเข้าด้วยกัน

การพึ่งพาโครงการทั่วไป

หยุดสักครู่แล้วพูดคุยเกี่ยวกับการจัดการการพึ่งพา ในขณะนี้ การใช้งานเป็นไปตามค่าเริ่มต้น ต้นแบบที่กำหนดค่าไว้ในโปรเจ็กต์ pom.xml จะใช้การพึ่งพาของส่วน Alfresco-repository โปรเจ็กต์ที่แชร์ไม่มีการขึ้นต่อกันนี้ ความจริงก็คือ โครงการที่แชร์จำนวนมากไม่ได้ใช้ Java เลย ตอนนี้เรามาแก้ไข pom.xml และลบการพึ่งพาพื้นที่เก็บข้อมูลกลางแจ้งออก สิ่งนี้จะทำให้คอมโพเนนต์สาธิตและคลาสการทดสอบที่เกี่ยวข้องสร้างข้อผิดพลาดเมื่อคอมไพล์ สามารถถอดออกได้

เป้าหมายสงคราม

อีกสิ่งหนึ่งที่ทำให้โครงการ Share แตกต่างก็คือ WAR ที่มีการปรับใช้ AMP แทนที่จะเป็น alfresco WAR คุณต้องปรับใช้กับ Share WAR ที่นี่ ซึ่งได้รับการกำหนดค่าในคุณสมบัติ alfresco.client.war ใน pom.xml ของคุณ โดยค่าเริ่มต้น จะถูกตั้งค่าเป็น "กลางแจ้ง" สำหรับโปรเจ็กต์แชร์ คุณต้องแทนที่ด้วย "แชร์"

มาลองทำสิ่งนี้กัน: การสร้างโครงการ Share โดยใช้ต้นแบบ

มาสร้างโปรเจ็กต์ใหม่ด้วยการตั้งค่าทั่วไปกันดีกว่า คุณสามารถไปที่บรรทัดคำสั่งและรันคำสั่งต้นแบบเดียวกันกับที่คุณเคยรันก่อนหน้านี้ ลบ artifactId ใหม่ จากนั้นเปลี่ยนคุณสมบัติ alfresco.client.war เป็น "share" หากคุณไม่ได้ใช้ Eclipse ให้ดำเนินการทันทีและข้ามส่วนถัดไป
อีกทางเลือกหนึ่งคือการกำหนดค่า Eclipse เพื่อให้คุณสามารถสร้างโปรเจ็กต์ Alfresco ใหม่โดยใช้ Alfresco Maven SDK โดยไม่ต้องออกจาก IDE มาทำอย่างนั้นกันเถอะ
  1. ไฟล์ โครงการ Maven ใหม่
  2. เลือกไดเร็กทอรีที่มีไดเร็กทอรีโปรเจ็กต์ "repo" คลิกถัดไป
    เริ่มต้นใช้งาน Maven Alfresco SDK ตอนที่ 2 - 4
  3. คลิกกำหนดค่าและเราสามารถเพิ่มไดเร็กทอรี Alfresco ลงในรายการได้
    เริ่มต้นใช้งาน Maven Alfresco SDK ตอนที่ 2 - 5
  4. คลิกเพิ่มแค็ตตาล็อกระยะไกล
  5. เลือก "https://artifacts.alfresco.com/nexus/content/groups/public/archetype-catalog.xml" เป็นไฟล์แค็ตตาล็อก เลือกคำอธิบาย "Alfresco Archetypes" หลังจากนั้นคลิก ตกลง และ ตกลง อีกครั้งใกล้กับแผงการตั้งค่า
    เริ่มต้นใช้งาน Maven Alfresco SDK ตอนที่ 2 - 6
  6. ตอนนี้เลือก "Alfresco Archetypes" ในไดเร็กทอรี แล้วคุณจะเห็นกลุ่มของ Archetypes ในรายการ
  7. เลือก "org.alfresco.maven.archetype" และต้นแบบสองตัวที่เหมือนกันจะปรากฏในตัวกรองเหมือนตอนเริ่มต้นของบทช่วยสอน
  8. เลือก alfresco-amp-archetype แล้วคลิกถัดไป
    เริ่มต้นใช้งาน Maven Alfresco SDK ตอนที่ 2 - 7
  9. การเลือก "com.someco" สำหรับ groupId, "someco-mvn-tutorial-share" เป็น artifactId และเปลี่ยน alfresco_target_amp_client_war เป็น "share" คลิกเสร็จสิ้น
    เริ่มต้นใช้งาน Maven Alfresco SDK ตอนที่ 2 - 8
ขณะนี้โครงการ Share ของคุณอยู่ในพื้นที่ทำงานแล้ว ครั้งถัดไปที่คุณสร้างโปรเจ็กต์ใหม่โดยใช้ต้นแบบ จะใช้เวลาน้อยลงเล็กน้อย เนื่องจากคุณไม่จำเป็นต้องเพิ่มไดเร็กทอรี

ทำความเข้าใจกับโครงสร้างไดเรกทอรี Share Access

ดังที่ฉันได้กล่าวไว้ก่อนหน้านี้ โครงสร้างของโครงการนี้เหมือนกับโครงการซื้อคืนของเราทุกประการ ข้อแตกต่างเพียงอย่างเดียวคือในโครงการซื้อคืนสิ่งต่าง ๆ เช่นเว็บสคริปต์จะอยู่ภายใน src/main/amp/config/alfresco/extension/templates/webscripts ในโปรเจ็กต์ทั่วไปพวกเขาจะอยู่ใน src/main/amp/config/alfresco /web-extension/site-webscripts.

เปิดตัวการทดสอบภายในบน Share

บ่อยครั้งที่คุณจะต้องทำงานในการตั้งค่าทั้งสองระดับพร้อมกัน ระดับทั่วไปของคุณต้องการพื้นที่เก็บข้อมูลสำหรับข้อความ วิธีหนึ่งในการทำเช่นนี้คือการบอก Maven ให้เริ่มโครงการ repo ของคุณโดยใช้:
cd someco-mvn-tutorial-repo.cd
การทดสอบการรวม mvn -Pamp-to-war
จากนั้นรันโครงการ Share ของคุณโดยใช้:
cd someco-mvn-tutorial-share
การทดสอบการรวม mvn -Pamp-to-war -Dmaven.tomcat.port=8081
เมื่อเซิร์ฟเวอร์ทั้งสองทำงานแล้ว คุณสามารถเปิด http://localhost:8081/share และเข้าสู่ระบบเพื่อทดสอบโมดูลของคุณ

การจัดการการพึ่งพา

สิ่งที่ยอดเยี่ยมเกี่ยวกับ Apache Maven คือมันจัดการการขึ้นต่อกันของโปรเจ็กต์ของคุณ สิ่งที่คุณต้องทำคือบอก Maven เกี่ยวกับสิ่งเหล่านั้นโดยการกำหนดค่า pom.xml ของคุณ ตามค่าเริ่มต้น Alfresco Maven SDK จะสร้างการขึ้นต่อกันสองรายการสำหรับโปรเจ็กต์ของคุณ: alfresco-repository และ junit
อย่างที่ฉันเขียนไว้ก่อนหน้านี้ โปรเจ็กต์ Alfresco Share ไม่ได้ขึ้นอยู่กับพื้นที่เก็บข้อมูล Alfresco ดังนั้นสำหรับโปรเจ็กต์ someco-mvn-tutorial-share การพึ่งพาเหล่านี้สามารถลบออกได้ แต่ถ้าฉันต้องการใส่เนื้อหา Java ลงในโปรเจ็กต์ Share ของฉัน เช่น เว็บสคริปต์ที่ใช้ Java ล่ะ? ในกรณีนี้ เราต้องเพิ่มการพึ่งพา
เว็บสคริปต์สามารถทำงานได้ทุกระดับ หากคุณเขียนเว็บสคริปต์ที่ใช้ Java ในโปรเจ็กต์ repo ของคุณ คลาสจะถูกสร้างขึ้นเนื่องจากการขึ้นต่อกันของส่วนพื้นที่เก็บข้อมูลกลางแจ้งในทางกลับกันจะขึ้นอยู่กับส่วนส่วน Spring-webscripts คุณสามารถดูสิ่งนี้ได้หากคุณเปิดลำดับชั้นการพึ่งพาใน Eclipse ในไฟล์ pom.xml ของคุณ:
ลำดับชั้นการพึ่งพาใน Eclipse
ลำดับชั้นการพึ่งพาใน Eclipse ตัวเลือกอื่น คุณสามารถดูลำดับชั้นการพึ่งพาได้โดยการเรียกใช้:
การพึ่งพา mvn: รายการ
ดังนั้น ในการเพิ่มสคริปต์เว็บที่ใช้ Java ในโครงการ Share ของคุณ เราจำเป็นต้องเพิ่ม spring-webscripts เป็นการขึ้นต่อกัน คุณสามารถทำได้โดยแก้ไข pom.xml ดังนี้:
<การพึ่งพา>
    <groupId>org.springframework.extensions.surf</groupId>
    <artifactId>สปริงเว็บสคริปต์</artifactId>
    <เวอร์ชัน>1.2.0-M14</เวอร์ชัน>
    <ขอบเขต>มีให้</ขอบเขต>
</การพึ่งพา>
ตอนนี้เว็บสคริปต์ที่ใช้ Java จะสามารถค้นหาคลาสพาเรนต์ได้ - DeclarativeWebScript
คุณอาจสงสัยว่าคุณรู้ได้อย่างไรว่าคลาส DeclarativeWebScript นั้นรวมอยู่ในสิ่งประดิษฐ์ spring-webscripts เช่นไปเจอมันโดยไปที่http://artifacts.alfresco.com คุณสามารถค้นหาตามชั้นเรียนและคุณจะเห็นสิ่งประดิษฐ์ทั้งหมดที่มีอยู่

หัวข้ออื่นสำหรับการค้นคว้าอิสระ

ตอนนี้คุณรู้วิธีใช้ Alfresco Maven SDK เพื่อสร้างโปรเจ็กต์และเป็นพื้นที่เก็บข้อมูล Alfresco และกำหนดค่า Alfresco Share แล้ว หากคุณยังใหม่ต่อการพัฒนา Alfresco ฉันหวังว่าคุณจะยอมรับว่าการรวบรวมโครงการเพื่อเริ่มต้นเป็นเรื่องง่ายมาก หากคุณเริ่มคุ้นเคยกับ Alfresco แล้ว แต่ยังใช้ SDK เก่าอยู่ ฉันหวังว่าสิ่งนี้จะเป็นแรงบันดาลใจให้คุณเปลี่ยนไปใช้ SDK ใหม่เพื่อสร้าง AMP ของคุณ
มีหลายหัวข้อที่ไม่ครอบคลุมในบทช่วยสอนนี้ ฉันจะปล่อยให้คุณสำรวจตามดุลยพินิจของคุณเอง นี่คือบางส่วนของพวกเขา:
  • Alfresco Maven SDK รองรับการโหลดคลาส แบบไดนามิกใหม่เมื่อใช้ร่วมกับเครื่องมือที่เรียกว่าJRebel
  • บทแนะนำนี้ครอบคลุมถึงต้นแบบ AMP แต่ Alfresco Maven SDK มีต้นแบบอื่นที่เรียกว่า All-in-One ต้นแบบนี้ให้การติดตั้ง Alfresco ที่สมบูรณ์แก่คุณ รวมถึง SOLR
  • Alfresco Maven SDK รองรับทั้ง Community Edition และ Enterprise Edition หากคุณต้องการความช่วยเหลือในการเข้าถึงอาร์ติแฟกต์ใน Enterprise Edition โปรดติดต่อฝ่ายสนับสนุนของ Alfresco

จะหาข้อมูลเพิ่มเติมได้ที่ไหน

<= ตอนที่ 1
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION