-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpom.xml
More file actions
executable file
·129 lines (118 loc) · 5.1 KB
/
Copy pathpom.xml
File metadata and controls
executable file
·129 lines (118 loc) · 5.1 KB
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<?xml version="1.0" encoding="UTF-8"?>
<!--
PARENT POM (the "reactor" root)
=================================
This pom does not produce a jar itself (packaging = pom). It has two jobs:
1. AGGREGATION: the <modules> list tells Maven which sub-projects exist.
Running `mvn install` here builds every module in dependency order
(core first, then desktop, because desktop depends on core).
2. INHERITANCE: everything declared here (properties, dependencyManagement,
pluginManagement) is inherited by child poms, so versions are defined
in exactly ONE place. Children only say WHAT they use, this file says
WHICH VERSION they get.
-->
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!--
groupId follows the io.github.<username> convention: it is a reversed
domain you actually "own" (your GitHub pages domain), which guarantees
global uniqueness if you ever publish to Maven Central.
-->
<groupId>io.github.sofushl</groupId>
<artifactId>mmm-parent</artifactId>
<version>0.1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>Minecraft Mount Manager</name>
<description>Tools for managing and comparing Minecraft mounts (horses, and eventually donkeys/mules/camels).</description>
<url>https://github.com/sofushl/mmm</url>
<licenses>
<license>
<name>MIT License</name>
<url>https://opensource.org/licenses/MIT</url>
</license>
</licenses>
<!--
The build order is resolved automatically from inter-module
dependencies, so the order of this list does not actually matter,
but keeping it logical helps humans.
NOTE: mmm-mod is intentionally NOT listed here. Minecraft mods are
built with Gradle (Fabric Loom / NeoGradle), not Maven, so that folder
will be a sibling Gradle project that consumes mmm-core from your
local Maven repository. See mmm-mod/README.md.
-->
<modules>
<module>mmm-core</module>
<module>mmm-desktop</module>
</modules>
<properties>
<!--
Java 21 (LTS), not 25:
Minecraft 1.20.5+ runs on Java 21, and mod toolchains compile
against it. Since mmm-core must be consumable by the future mod,
the whole project targets 21. JavaFX 23 runs fine on JDK 21.
-->
<maven.compiler.release>21</maven.compiler.release>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- Single source of truth for dependency versions -->
<javafx.version>23.0.2</javafx.version>
</properties>
<!--
dependencyManagement declares versions WITHOUT adding the dependency
to anything. A child that wants javafx-controls just writes the
groupId/artifactId and inherits the version from here. This is why
mmm-core can stay 100% JavaFX-free: nothing is forced on it.
-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-base</artifactId>
<version>${javafx.version}</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-graphics</artifactId>
<version>${javafx.version}</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>${javafx.version}</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-fxml</artifactId>
<version>${javafx.version}</version>
</dependency>
<!-- Modules can depend on each other via the project version -->
<dependency>
<groupId>io.github.sofushl</groupId>
<artifactId>mmm-core</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<!--
pluginManagement is the same idea for build plugins: it pins versions
and default configuration, but a plugin only runs in a child if the
child (or a Maven default lifecycle binding) asks for it.
-->
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.13.0</version>
<!-- <release> is picked up from maven.compiler.release above -->
</plugin>
<plugin>
<groupId>org.openjfx</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>0.0.8</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>