前言
在專案開發上往往會將一個大型專案進行拆分,一來可以進行模組分類,二來可以重複使用,楊藝進行專案開發也是如此,不過正如楊藝先前整理的「Apache Maven 依賴傳遞」,透過依賴傳遞可以將上層專案以及上層專案的 <dependency>
一併傳入到下層專案內,但如果上層專案有所更動,就得重新建置上層專案,當項目拆分得更細時那就得一路從上層建置到下層,有時也可能把建置順序搞錯,因此可以定義一個彙整這些依賴的專案,透過這專案一併進行專案清理與建置。
實作
建置方式十分簡單,僅需建置一個Apache Maven專案,打包方式設定為pom,再使用<modules>
定義好要建置的專案即可。因建置簡單,在此只展示pom.xml檔設定。
Maven 設定檔:pom.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cc.artyang.blog</groupId>
<artifactId>artyang-batch-build</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<!-- Modules -->
<modules>
<module>../artyang-bach-service</module>
<module>../artyang-batch</module>
</modules>
</project>
|
建置結果
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
| > mvn install
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] artyang-bach-service [jar]
[INFO] artyang-batch [jar]
[INFO] artyang-batch-build [pom]
[INFO]
[INFO] -------------------< cc.artyang.blog:artyang-bach-service >-------------------
[INFO] Building artyang-bach-service 1.0-SNAPSHOT [1/3]
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ artyang-bach-service ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\Users\artan\Documents\NetBeansProjects\artyang-bach-service\src\main\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ artyang-bach-service ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ artyang-bach-service ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\Users\artan\Documents\NetBeansProjects\artyang-bach-service\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ artyang-bach-service ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ artyang-bach-service ---
[INFO] No tests to run.
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ artyang-bach-service ---
[INFO]
[INFO] --- maven-install-plugin:2.4:install (default-install) @ artyang-bach-service ---
[INFO] Installing C:\Users\artan\Documents\NetBeansProjects\artyang-bach-service\target\artyang-bach-service-1.0-SNAPSHOT.jar to C:\Users\artan\.m2\repository\cc\artyang\blog\artyang-bach-service\1.0-SNAPSHOT\artyang-bach-service-1.0-SNAPSHOT.jar
[INFO] Installing C:\Users\artan\Documents\NetBeansProjects\artyang-bach-service\pom.xml to C:\Users\artan\.m2\repository\cc\artyang\blog\artyang-bach-service\1.0-SNAPSHOT\artyang-bach-service-1.0-SNAPSHOT.pom
[INFO]
[INFO] ----------------------< cc.artyang.blog:artyang-batch >-----------------------
[INFO] Building artyang-batch 1.0-SNAPSHOT [2/3]
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ artyang-batch ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\Users\artan\Documents\NetBeansProjects\artyang-batch\src\main\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ artyang-batch ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ artyang-batch ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\Users\artan\Documents\NetBeansProjects\artyang-batch\src\test\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ artyang-batch ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ artyang-batch ---
[INFO] No tests to run.
[INFO]
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ artyang-batch ---
[INFO]
[INFO] --- maven-install-plugin:2.4:install (default-install) @ artyang-batch ---
[INFO] Installing C:\Users\artan\Documents\NetBeansProjects\artyang-batch\target\artyang-batch-1.0-SNAPSHOT.jar to C:\Users\artan\.m2\repository\cc\artyang\blog\artyang-batch\1.0-SNAPSHOT\artyang-batch-1.0-SNAPSHOT.jar
[INFO] Installing C:\Users\artan\Documents\NetBeansProjects\artyang-batch\pom.xml to C:\Users\artan\.m2\repository\cc\artyang\blog\artyang-batch\1.0-SNAPSHOT\artyang-batch-1.0-SNAPSHOT.pom
[INFO]
[INFO] -------------------< cc.artyang.blog:artyang-batch-build >--------------------
[INFO] Building artyang-batch-build 1.0-SNAPSHOT [3/3]
[INFO] --------------------------------[ pom ]---------------------------------
[INFO]
[INFO] --- maven-install-plugin:2.4:install (default-install) @ artyang-batch-build ---
[INFO] Installing C:\Users\artan\Documents\NetBeansProjects\artyang-batch-build\pom.xml to C:\Users\artan\.m2\repository\cc\artyang\blog\artyang-batch-build\1.0-SNAPSHOT\artyang-batch-build-1.0-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for artyang-batch-build 1.0-SNAPSHOT:
[INFO]
[INFO] artyang-bach-service .................................. SUCCESS [ 1.044 s]
[INFO] artyang-batch ......................................... SUCCESS [ 0.090 s]
[INFO] artyang-batch-build ................................... SUCCESS [ 0.022 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.276 s
[INFO] Finished at: 2020-04-18T10:06:13+08:00
[INFO] ------------------------------------------------------------------------
|