Skip to content

Commit 65bf230

Browse files
committed
fix Maven profile activation detection
1 parent 2c8b2c5 commit 65bf230

File tree

2 files changed

+29
-23
lines changed
  • net.lecousin.core/src
    • main/java/net/lecousin/framework/application/libraries/artifacts/maven
    • test/java/net/lecousin/framework/core/tests/application

2 files changed

+29
-23
lines changed

net.lecousin.core/src/main/java/net/lecousin/framework/application/libraries/artifacts/maven/MavenPOM.java

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -327,6 +327,12 @@ public List<LibraryDescriptor.Dependency> getDependencies() {
327327
}
328328
return list;
329329
}
330+
331+
public List<LibraryDescriptor.Dependency> getAllDependenciesAnyScope() {
332+
ArrayList<LibraryDescriptor.Dependency> list = new ArrayList<>(dependencies.size());
333+
list.addAll(dependencies);
334+
return list;
335+
}
330336

331337
private class Reader extends Task.Cpu<Void, Exception> {
332338
private Reader(AsyncWork<XMLStreamReader, Exception> startXMLReader, byte priority,
@@ -742,18 +748,16 @@ public Void run() {
742748
resolveProperties(properties, finalProperties);
743749

744750
Profile defaultProfile = null;
745-
Profile activeProfile = null;
751+
List<Profile> activeProfiles = new LinkedList<>();
746752
for (Profile profile : profiles) {
747-
if (checkProfile(profile, finalProperties)) {
748-
activeProfile = profile;
749-
break;
750-
}
751-
if (profile.activeByDefault && defaultProfile == null)
753+
if (checkProfile(profile, finalProperties))
754+
activeProfiles.add(profile);
755+
else if (profile.activeByDefault && defaultProfile == null)
752756
defaultProfile = profile;
753757
}
754-
if (activeProfile == null) activeProfile = defaultProfile;
755-
if (activeProfile != null)
756-
addProfile(activeProfile);
758+
if (activeProfiles.isEmpty() && defaultProfile != null) activeProfiles.add(defaultProfile);
759+
for (Profile p : activeProfiles)
760+
addProfile(p);
757761

758762
resolveProperties(properties, finalProperties);
759763
properties = finalProperties;
@@ -879,40 +883,40 @@ private boolean checkProfile(Profile profile, Map<String, String> finalPropertie
879883
if (profile.activationOS.name != null) {
880884
String name = System.getProperty("os.name").toLowerCase(Locale.US);
881885
String s = profile.activationOS.name.toLowerCase();
882-
if (s.startsWith("!"))
886+
if (s.startsWith("!")) {
883887
if (name.equals(s.substring(1)))
884888
return false;
885-
if (!name.equals(s))
889+
} else if (!name.equals(s))
886890
return false;
887891
}
888892
if (profile.activationOS.arch != null) {
889893
String arch = System.getProperty("os.arch").toLowerCase(Locale.US);
890894
String s = profile.activationOS.arch.toLowerCase();
891-
if (s.startsWith("!"))
895+
if (s.startsWith("!")) {
892896
if (arch.equals(s.substring(1)))
893897
return false;
894-
if (!arch.equals(s))
898+
} else if (!arch.equals(s))
895899
return false;
896900
}
897901
if (profile.activationOS.family != null) {
898902
OSFamily family = SystemEnvironment.getOSFamily();
899903
if (family == null)
900904
return false;
901-
String fam = profile.activationOS.family.toLowerCase();
902-
String s = family.getName();
903-
if (s.startsWith("!"))
905+
String fam = family.getName();
906+
String s = profile.activationOS.family.toLowerCase();
907+
if (s.startsWith("!")) {
904908
if (fam.equals(s.substring(1)))
905909
return false;
906-
if (!fam.equals(s))
910+
} else if (!fam.equals(s))
907911
return false;
908912
}
909913
if (profile.activationOS.version != null) {
910914
String ver = System.getProperty("os.version").toLowerCase(Locale.US);
911915
String s = profile.activationOS.version.toLowerCase();
912-
if (s.startsWith("!"))
916+
if (s.startsWith("!")) {
913917
if (ver.equals(s.substring(1)))
914918
return false;
915-
if (!ver.equals(s))
919+
} else if (!ver.equals(s))
916920
return false;
917921
}
918922
}

net.lecousin.core/src/test/java/net/lecousin/framework/core/tests/application/TestMaven.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -157,9 +157,10 @@ public void testRemoteRepository() throws Exception {
157157

158158

159159
pom = repo.load("org.javassist", "javassist", "3.16.1-GA", pomLoader, Task.PRIORITY_NORMAL).blockResult(0);
160-
for (Dependency dep : pom.getDependencies()) {
161-
dep.getGroupId();
162-
dep.getArtifactId();
160+
boolean foundTools = false;
161+
for (Dependency dep : pom.getAllDependenciesAnyScope()) {
162+
if ("com.sun".equals(dep.getGroupId()) && "tools".equals(dep.getArtifactId()))
163+
foundTools = true;
163164
dep.getClassifier();
164165
dep.getVersionSpecification();
165166
dep.getExcludedDependencies();
@@ -169,9 +170,10 @@ public void testRemoteRepository() throws Exception {
169170
pom.getDependenciesAdditionalRepositories();
170171
pom.getLoader();
171172
pom.getDirectory();
173+
Assert.assertTrue("dependency com.sun/tools found", foundTools);
172174

173175
pom = repo.load("org.apache.maven.shared", "maven-filtering", "1.3", pomLoader, Task.PRIORITY_NORMAL).blockResult(0);
174-
for (Dependency dep : pom.getDependencies()) {
176+
for (Dependency dep : pom.getAllDependenciesAnyScope()) {
175177
dep.getGroupId();
176178
dep.getArtifactId();
177179
dep.getClassifier();

0 commit comments

Comments
 (0)