build: scope optional module versions to profiles
This commit is contained in:
@@ -93,6 +93,35 @@ class MavenModuleProfileTest {
|
|||||||
"modules/apps/xinda-push-app");
|
"modules/apps/xinda-push-app");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void optionalModuleVersionsAreScopedToTheirProfiles() throws Exception {
|
||||||
|
Document pom = rootPom();
|
||||||
|
|
||||||
|
assertThat(rootDependencyManagementArtifacts(pom))
|
||||||
|
.doesNotContain(
|
||||||
|
"protocol-jt1078",
|
||||||
|
"protocol-jsatl12",
|
||||||
|
"vehicle-state-service",
|
||||||
|
"raw-archive-store",
|
||||||
|
"event-file-store",
|
||||||
|
"command-gateway",
|
||||||
|
"inbound-xinda-push",
|
||||||
|
"xinda-push-app");
|
||||||
|
|
||||||
|
assertThat(profileDependencyManagementArtifacts(pom, "optional-command-gateway"))
|
||||||
|
.containsExactly("protocol-jt1078", "command-gateway");
|
||||||
|
assertThat(profileDependencyManagementArtifacts(pom, "optional-attachments"))
|
||||||
|
.containsExactly("protocol-jsatl12");
|
||||||
|
assertThat(profileDependencyManagementArtifacts(pom, "optional-latest-state"))
|
||||||
|
.containsExactly("vehicle-state-service");
|
||||||
|
assertThat(profileDependencyManagementArtifacts(pom, "optional-raw-archive-store"))
|
||||||
|
.containsExactly("raw-archive-store");
|
||||||
|
assertThat(profileDependencyManagementArtifacts(pom, "optional-event-file-store"))
|
||||||
|
.containsExactly("event-file-store");
|
||||||
|
assertThat(profileDependencyManagementArtifacts(pom, "legacy-xinda"))
|
||||||
|
.containsExactly("inbound-xinda-push", "xinda-push-app");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void appsDirectoryContainsOnlyRealMavenModules() throws Exception {
|
void appsDirectoryContainsOnlyRealMavenModules() throws Exception {
|
||||||
try (Stream<Path> apps = Files.list(repositoryRoot().resolve("modules/apps"))) {
|
try (Stream<Path> apps = Files.list(repositoryRoot().resolve("modules/apps"))) {
|
||||||
@@ -232,9 +261,29 @@ class MavenModuleProfileTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static List<String> profileModules(Document pom, String profileId) {
|
private static List<String> profileModules(Document pom, String profileId) {
|
||||||
|
Element profile = profile(pom, profileId);
|
||||||
|
if (profile == null) {
|
||||||
|
return List.of();
|
||||||
|
}
|
||||||
|
return directModules(firstDirectChild(profile, "modules"));
|
||||||
|
}
|
||||||
|
|
||||||
|
private static List<String> rootDependencyManagementArtifacts(Document pom) {
|
||||||
|
return dependencyManagementArtifacts(pom.getDocumentElement());
|
||||||
|
}
|
||||||
|
|
||||||
|
private static List<String> profileDependencyManagementArtifacts(Document pom, String profileId) {
|
||||||
|
Element profile = profile(pom, profileId);
|
||||||
|
if (profile == null) {
|
||||||
|
return List.of();
|
||||||
|
}
|
||||||
|
return dependencyManagementArtifacts(profile);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Element profile(Document pom, String profileId) {
|
||||||
Element profiles = firstDirectChild(pom.getDocumentElement(), "profiles");
|
Element profiles = firstDirectChild(pom.getDocumentElement(), "profiles");
|
||||||
if (profiles == null) {
|
if (profiles == null) {
|
||||||
return List.of();
|
return null;
|
||||||
}
|
}
|
||||||
NodeList children = profiles.getChildNodes();
|
NodeList children = profiles.getChildNodes();
|
||||||
for (int i = 0; i < children.getLength(); i++) {
|
for (int i = 0; i < children.getLength(); i++) {
|
||||||
@@ -243,10 +292,10 @@ class MavenModuleProfileTest {
|
|||||||
}
|
}
|
||||||
Element id = firstDirectChild(profile, "id");
|
Element id = firstDirectChild(profile, "id");
|
||||||
if (id != null && profileId.equals(id.getTextContent().trim())) {
|
if (id != null && profileId.equals(id.getTextContent().trim())) {
|
||||||
return directModules(firstDirectChild(profile, "modules"));
|
return profile;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return List.of();
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static List<String> directModules(Element modules) {
|
private static List<String> directModules(Element modules) {
|
||||||
@@ -263,6 +312,32 @@ class MavenModuleProfileTest {
|
|||||||
return List.copyOf(out);
|
return List.copyOf(out);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static List<String> dependencyManagementArtifacts(Element owner) {
|
||||||
|
Element dependencyManagement = firstDirectChild(owner, "dependencyManagement");
|
||||||
|
if (dependencyManagement == null) {
|
||||||
|
return List.of();
|
||||||
|
}
|
||||||
|
Element dependencies = firstDirectChild(dependencyManagement, "dependencies");
|
||||||
|
if (dependencies == null) {
|
||||||
|
return List.of();
|
||||||
|
}
|
||||||
|
List<String> artifacts = new ArrayList<>();
|
||||||
|
NodeList children = dependencies.getChildNodes();
|
||||||
|
for (int i = 0; i < children.getLength(); i++) {
|
||||||
|
if (!(children.item(i) instanceof Element dependency) || !"dependency".equals(dependency.getTagName())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
Element groupId = firstDirectChild(dependency, "groupId");
|
||||||
|
Element artifactId = firstDirectChild(dependency, "artifactId");
|
||||||
|
if (groupId != null
|
||||||
|
&& artifactId != null
|
||||||
|
&& "com.lingniu.ingest".equals(groupId.getTextContent().trim())) {
|
||||||
|
artifacts.add(artifactId.getTextContent().trim());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return List.copyOf(artifacts);
|
||||||
|
}
|
||||||
|
|
||||||
private static boolean dependencyOptional(Document pom, String groupId, String artifactId) {
|
private static boolean dependencyOptional(Document pom, String groupId, String artifactId) {
|
||||||
Element dependencies = firstDirectChild(pom.getDocumentElement(), "dependencies");
|
Element dependencies = firstDirectChild(pom.getDocumentElement(), "dependencies");
|
||||||
if (dependencies == null) {
|
if (dependencies == null) {
|
||||||
|
|||||||
80
pom.xml
80
pom.xml
@@ -46,30 +46,80 @@
|
|||||||
<module>modules/protocols/protocol-jt1078</module>
|
<module>modules/protocols/protocol-jt1078</module>
|
||||||
<module>modules/apps/command-gateway</module>
|
<module>modules/apps/command-gateway</module>
|
||||||
</modules>
|
</modules>
|
||||||
|
<dependencyManagement>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.lingniu.ingest</groupId>
|
||||||
|
<artifactId>protocol-jt1078</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.lingniu.ingest</groupId>
|
||||||
|
<artifactId>command-gateway</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</dependencyManagement>
|
||||||
</profile>
|
</profile>
|
||||||
<profile>
|
<profile>
|
||||||
<id>optional-attachments</id>
|
<id>optional-attachments</id>
|
||||||
<modules>
|
<modules>
|
||||||
<module>modules/protocols/protocol-jsatl12</module>
|
<module>modules/protocols/protocol-jsatl12</module>
|
||||||
</modules>
|
</modules>
|
||||||
|
<dependencyManagement>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.lingniu.ingest</groupId>
|
||||||
|
<artifactId>protocol-jsatl12</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</dependencyManagement>
|
||||||
</profile>
|
</profile>
|
||||||
<profile>
|
<profile>
|
||||||
<id>optional-latest-state</id>
|
<id>optional-latest-state</id>
|
||||||
<modules>
|
<modules>
|
||||||
<module>modules/services/vehicle-state-service</module>
|
<module>modules/services/vehicle-state-service</module>
|
||||||
</modules>
|
</modules>
|
||||||
|
<dependencyManagement>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.lingniu.ingest</groupId>
|
||||||
|
<artifactId>vehicle-state-service</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</dependencyManagement>
|
||||||
</profile>
|
</profile>
|
||||||
<profile>
|
<profile>
|
||||||
<id>optional-raw-archive-store</id>
|
<id>optional-raw-archive-store</id>
|
||||||
<modules>
|
<modules>
|
||||||
<module>modules/sinks/raw-archive-store</module>
|
<module>modules/sinks/raw-archive-store</module>
|
||||||
</modules>
|
</modules>
|
||||||
|
<dependencyManagement>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.lingniu.ingest</groupId>
|
||||||
|
<artifactId>raw-archive-store</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</dependencyManagement>
|
||||||
</profile>
|
</profile>
|
||||||
<profile>
|
<profile>
|
||||||
<id>optional-event-file-store</id>
|
<id>optional-event-file-store</id>
|
||||||
<modules>
|
<modules>
|
||||||
<module>modules/sinks/event-file-store</module>
|
<module>modules/sinks/event-file-store</module>
|
||||||
</modules>
|
</modules>
|
||||||
|
<dependencyManagement>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.lingniu.ingest</groupId>
|
||||||
|
<artifactId>event-file-store</artifactId>
|
||||||
|
<version>${project.version}</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</dependencyManagement>
|
||||||
</profile>
|
</profile>
|
||||||
<profile>
|
<profile>
|
||||||
<id>legacy-xinda</id>
|
<id>legacy-xinda</id>
|
||||||
@@ -237,16 +287,6 @@
|
|||||||
<artifactId>sink-archive</artifactId>
|
<artifactId>sink-archive</artifactId>
|
||||||
<version>${project.version}</version>
|
<version>${project.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>com.lingniu.ingest</groupId>
|
|
||||||
<artifactId>raw-archive-store</artifactId>
|
|
||||||
<version>${project.version}</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.lingniu.ingest</groupId>
|
|
||||||
<artifactId>event-file-store</artifactId>
|
|
||||||
<version>${project.version}</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.lingniu.ingest</groupId>
|
<groupId>com.lingniu.ingest</groupId>
|
||||||
<artifactId>tdengine-history-store</artifactId>
|
<artifactId>tdengine-history-store</artifactId>
|
||||||
@@ -257,11 +297,6 @@
|
|||||||
<artifactId>event-history-service</artifactId>
|
<artifactId>event-history-service</artifactId>
|
||||||
<version>${project.version}</version>
|
<version>${project.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>com.lingniu.ingest</groupId>
|
|
||||||
<artifactId>vehicle-state-service</artifactId>
|
|
||||||
<version>${project.version}</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.lingniu.ingest</groupId>
|
<groupId>com.lingniu.ingest</groupId>
|
||||||
<artifactId>vehicle-stat-service</artifactId>
|
<artifactId>vehicle-stat-service</artifactId>
|
||||||
@@ -277,26 +312,11 @@
|
|||||||
<artifactId>protocol-jt808</artifactId>
|
<artifactId>protocol-jt808</artifactId>
|
||||||
<version>${project.version}</version>
|
<version>${project.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>com.lingniu.ingest</groupId>
|
|
||||||
<artifactId>protocol-jt1078</artifactId>
|
|
||||||
<version>${project.version}</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.lingniu.ingest</groupId>
|
|
||||||
<artifactId>protocol-jsatl12</artifactId>
|
|
||||||
<version>${project.version}</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.lingniu.ingest</groupId>
|
<groupId>com.lingniu.ingest</groupId>
|
||||||
<artifactId>inbound-mqtt</artifactId>
|
<artifactId>inbound-mqtt</artifactId>
|
||||||
<version>${project.version}</version>
|
<version>${project.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>com.lingniu.ingest</groupId>
|
|
||||||
<artifactId>command-gateway</artifactId>
|
|
||||||
<version>${project.version}</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.lingniu.ingest</groupId>
|
<groupId>com.lingniu.ingest</groupId>
|
||||||
<artifactId>gb32960-ingest-app</artifactId>
|
<artifactId>gb32960-ingest-app</artifactId>
|
||||||
|
|||||||
Reference in New Issue
Block a user