[Java] การนำ jar file library มาใช้กับ Maven Project

          Dependency ทำให้เราสามารถใช้งาน source code จาก repository ได้ ทำให้ชีวิตโปรแกรมเมอร์อย่างเรา ๆ สะดวกสะบายพอสมควร อีกทั้งยังสามารถ share dependency ให้ทีมสามารถใช้งานได้เหมือนกัน

          แต่ !! โลกก็ไม่ได้สวยงามเสมอไป บางทีโปรเจคเก่า ๆ ที่เป็นแบบ editor based ก็อาจทำร้ายเราได้ โดยเฉพาะ library ที่ทำกันขึ้นมาเอง (*.jar) ซึ่งไม่ได้ download มาจาก dependency ทำให้เมื่อมีคนใหม่เข้ามาในทีมก็อาจเสียเวลา setup กันอีก แทนที่จะเปิดขึ้นมาแล้วสามารถเริ่มทำงานได้เลย


วิธีการที่ผมใช้และคิดว่ามัน work สุดคือ การทำ local repository ในโปรเจคซะเลย

อันดับแรก เอา *.jar ไฟล์มาทำให้เป็น maven based ซะก่อน

mvn install:install-file 
 -Dfile=mylib1.0.jar 
 -DgroupId=th.in.lordgift 
 -DartifactId=MyLib 
 -Dversion=1.0 
 -Dpackaging=jar 
 -DlocalRepositoryPath=local-libs
  • file - ระบุ *.jar ของเรา ไม่จำเป็นต้องอยู่ในโปรเจค
  • localRepositoryPath - ระบุ directory ปลายทางที่ต้องการให้เป็น local repository (ในโปรเจค)
  • groupId, artifactId, version - เป็นค่าที่กำหนดเอง สามารถใส่อะไรก็ได้ แต่ควรตั้งตามรูปแบบของ maven ไม่งั้นตอนเรียกใช้ dependency ก็จะแปลก ๆ หน่อย (ทำได้ แต่ไม่ควร)

in-project repository
          หลังจากรันคำสั่งแล้ว เราจะได้ local-libs หน้าตารก ๆ หน่อย ที่สำคัญคือไฟล์ *.jar เราจะถูกเปลี่ยนชื่อตาม attribute ที่กำหนด พร้อมกับไฟล์ *.pom เฉพาะสำหรับแต่ละ library
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <groupId>th.in.lordgift</groupId>
  <artifactId>MyLib</artifactId>
  <version>1.0</version>
  <description>POM was created from install:install-file</description>
</project>

จัดการ pom.xml ในโปรเจค

เพิ่ม repository เพื่อชี้ไปที่ local-libs
<repositories>

 <!-- others repository (if any) -->

 <repository>
  <id>local-libs</id>
  <url>file://${project.basedir}/local-libs</url>
 </repository>
</repositories>

เพิ่ม dependency เพื่อเรียกใช้งานตามปกติ
<dependencies>

 <!-- others dependency (if any) -->

 <dependency>
  <groupId>th.in.lordgift</groupId>
  <artifactId>MyLib</artifactId>
  <version>1.0</version>
 </dependency>
</dependencies>

          เพียงเท่านี้ library เก่า ๆ ก็สามารถใช้งานในรูปแบบ maven ได้แล้ว แต่สิ่งสำคัญควรตกลงเรื่อง version กันให้ดี เพราะ maven จะไม่สนว่า *.jar ของเราเป็นอย่างไร เพียงแค่ copy ไปจัดให้อยู่ในรูปแบบของมันเท่านั้นเอง

ref : http://roufid.com/3-ways-to-add-local-jar-to-maven-project/

Facebook Comment

Recent Posts

Popular post of 7 days

Portal คืออะไรกันนะ???

[Java] ความแตกต่างระหว่าง Overloading กับ Overriding

Port Forwarding สำหรับคนใช้ AIS Fibre

Popular

Portal คืออะไรกันนะ???

[Java] ความแตกต่างระหว่าง Overloading กับ Overriding

มาตรฐานการตั้งชื่อตัวแปร (Naming Convention)

เรื่องของ ++i กับ i++

Port Forwarding สำหรับคนใช้ AIS Fibre

วิธีการสมัคร Apple Developer Program และ Enterprise Program ฉบับลงมือเอง

ลืมรหัสปลดล็อค Android เข้าเครื่องไม่ได้ มีทางออกครับ

ทดสอบ Mobile App แบบ Automated ด้วย Appium ทำยังไงกันนะ

Deeplink, Universal Links คืออะไร ทำงานร่วมกับ Mobile App ได้ยังไง

Android Auto & Apple Carplay คืออะไร ใช้งานยังไง