延續上一回的實作,現在我們將從桌面視窗程式開始!
Desktop
- 依照以下資訊,建立 Maven 專案 (使用 maven-archetype-quickstart)
- groupId: com.appx
- artifactId: user-service-desktop
- package: com.appx.userservice.desktop
- version: 1.0-SNAPSHOT
- 這次不實作unit test,所以把 src/test/java 底下 AppTest.java 刪除,同時也移除 POM.xml 裡面 junit 的 dependency
- 在 POM.xml 增加以下 plugin 設定,除了 compiler plugin,也使用了 maven-shade-plugin 用來把整個桌面視窗程式打包成單一 jar 檔(包含dependency),可以看到在 package 這個lifecycle build phase 綁定了 shade goal,並且必須指定 main 方法所在的class
(maven lifecycle的概念非常重要,請參考之前的文章)
1234567891011121314151617181920212223242526272829303132333435363738<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.6.1</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-shade-plugin</artifactId><version>3.0.0</version><executions><!-- Run shade goal on package phase --><execution><phase>package</phase><goals><goal>shade</goal></goals><configuration><transformers><!-- add Main-Class to manifest file --><transformerimplementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"><mainClass>com.appx.userservice.desktop.App</mainClass></transformer></transformers></configuration></execution></executions></plugin></plugins></build> - 加入 core 專案作為 dependency
12345<dependency><groupId>com.appx</groupId><artifactId>user-service-core</artifactId><version>1.0-SNAPSHOT</version></dependency> - 下載以下程式,並放至 src/main/java 底下這個package com.appx.userservice.desktop
https://drive.google.com/open?id=0B0C215CJ0AjoX2tPLVpVZlJYQkk - 執行 mvn package ,可以發現 target 資料夾底下多了兩個 jar,其中 user-service-desktop-1.0-SNAPSHOT.jar 包含了相關的 dependencies
- 可以使用 jar -tf 指令來比較兩個 jar 的內容
jar -tf user-service-desktop-1.0-SNAPSHOT.jar
jar -tf original-user-service-desktop-1.0-SNAPSHOT.jar - 執行 jar ,確認一切都 ok,id可以輸入 1 ~ 3,會看到查詢結果