เริ่มต้นใช้งาน 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 ที่มีอยู่ คลิกถัดไป
- ระบุไดเร็กทอรีที่มีไดเร็กทอรี someco-mvn-tutorial-repo Eclipse จะตรวจสอบไดเร็กทอรีนี้และแสดงโปรเจ็กต์ของคุณในรายการโปรเจ็กต์ ตรวจสอบให้แน่ใจว่าได้เลือกช่องทำเครื่องหมายถัดจากชื่อโครงการแล้วคลิกถัดไป
- Eclipse จะแสดงการตั้งค่าแผงปลั๊กอิน Maven คุณสามารถเพิกเฉยได้อย่างปลอดภัยในตอนนี้ คลิกเสร็จสิ้น
ในแผงเครื่องหมาย คุณจะเห็นรายการปัญหาของ Maven ที่ระบุว่า "การดำเนินการปลั๊กอินไม่ครอบคลุมโดยการกำหนดค่าวงจรการใช้งาน"
Maven มีปัญหากับปลั๊กอิน (set-version)
วิธีแก้ไข:
- คลิกขวาที่ข้อผิดพลาดและเลือก "Quick Fix"
- การเลือก "ทำเครื่องหมายเวอร์ชันชุดเป้าหมายอย่างถาวรใน pom.xml ว่าถูกละเว้นใน Eclipse build" พร้อม.
- เลือกตำแหน่งที่ POM ของคุณตั้งอยู่ (ของฉันคือ com.someco : someco-mvn-tutorial-repo : 1.0-SNAPSHOT) และคลิก ตกลง
- คลิกขวาที่โปรเจ็กต์แล้วเลือก Maven อัปเดตโปรเจ็กต์
- ตรวจสอบให้แน่ใจว่าได้เลือกโครงการแล้ว และคลิกตกลง
ทำความเข้าใจกับโครงสร้างโครงการ
โครงสร้างไดเร็กทอรีของโปรเจ็กต์ของคุณน่าสำรวจใน 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
ตอนนี้คุณเข้าใจวิธีสร้างโปรเจ็กต์สำหรับการตั้งค่าระดับพื้นที่เก็บข้อมูลแล้ว มาดูระดับแชร์กันดีกว่า ในส่วนหนึ่งของสิ่งนี้ ฉันจะแสดงตัวเลือกอื่นสำหรับการสร้างโปรเจ็กต์โดยไม่ต้องออกจาก 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 มาทำอย่างนั้นกันเถอะ
- ไฟล์ โครงการ Maven ใหม่
- เลือกไดเร็กทอรีที่มีไดเร็กทอรีโปรเจ็กต์ "repo" คลิกถัดไป
- คลิกกำหนดค่าและเราสามารถเพิ่มไดเร็กทอรี Alfresco ลงในรายการได้
- คลิกเพิ่มแค็ตตาล็อกระยะไกล
- เลือก "https://artifacts.alfresco.com/nexus/content/groups/public/archetype-catalog.xml" เป็นไฟล์แค็ตตาล็อก เลือกคำอธิบาย "Alfresco Archetypes" หลังจากนั้นคลิก ตกลง และ ตกลง อีกครั้งใกล้กับแผงการตั้งค่า
- ตอนนี้เลือก "Alfresco Archetypes" ในไดเร็กทอรี แล้วคุณจะเห็นกลุ่มของ Archetypes ในรายการ
- เลือก "org.alfresco.maven.archetype" และต้นแบบสองตัวที่เหมือนกันจะปรากฏในตัวกรองเหมือนตอนเริ่มต้นของบทช่วยสอน
- เลือก alfresco-amp-archetype แล้วคลิกถัดไป
- การเลือก "com.someco" สำหรับ groupId, "someco-mvn-tutorial-share" เป็น artifactId และเปลี่ยน alfresco_target_amp_client_war เป็น "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 ตัวเลือกอื่น คุณสามารถดูลำดับชั้นการพึ่งพาได้โดยการเรียกใช้:
การพึ่งพา 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
จะหาข้อมูลเพิ่มเติมได้ที่ไหน
- เอกสารอย่างเป็นทางการสำหรับAlfresco Maven SDK อยู่ที่http://docs.alfresco.com
- สามารถดูเอกสารราย ละเอียดเพิ่มเติมเกี่ยวกับ Alfresco Maven SDK ได้ที่artifacts.alfresco.com
- การนำเสนอ Gab ที่ Alfresco Summit ขับเคลื่อนด้วยการทดสอบ การพัฒนาอย่างรวดเร็ว และการส่งมอบโซลูชั่น Alfresco อย่างต่อเนื่อง
- Instant Apache Maven Starterหนังสือของ Maurizio Turatti และ Maurizio Pillitu อาจเป็นแหล่งข้อมูลที่ดีเยี่ยมหากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับ Apache Maven
- เริ่มต้นด้วยการนำเสนอการพัฒนา Alfresco โดย Gethin James จาก Alfresco Summit
- Alfresco Developer SeriesบนECM Architectมีบทช่วยสอนฟรีเกี่ยวกับโมเดลเนื้อหาที่กำหนดเอง การดำเนินการ พฤติกรรม เวิร์กโฟลว์ และสคริปต์เว็บ
GO TO FULL VERSION