[gradle-debian-helper] 02/08: org.debian.gradle.tasks.MavenPom: Use Reflections to invoke the methods of org.apache.maven.model.Dependency
Kai-Chung Yan
seamlik-guest at moszumanska.debian.org
Sat Oct 22 11:42:42 UTC 2016
This is an automated email from the git hooks/post-receive script.
seamlik-guest pushed a commit to branch master
in repository gradle-debian-helper.
commit 00f5f3042e04a39d2f0bf4a7f8d35df149d27815
Author: Kai-Chung Yan (殷啟聰) <seamlikok at gmail.com>
Date: Fri Oct 21 14:10:28 2016 +0800
org.debian.gradle.tasks.MavenPom: Use Reflections to invoke the methods of org.apache.maven.model.Dependency
---
.../java/org/debian/gradle/tasks/MavenPom.java | 64 ++++++++++++++++++----
1 file changed, 54 insertions(+), 10 deletions(-)
diff --git a/gradle-helper-plugin/src/main/java/org/debian/gradle/tasks/MavenPom.java b/gradle-helper-plugin/src/main/java/org/debian/gradle/tasks/MavenPom.java
index 4295a76..7bc2710 100644
--- a/gradle-helper-plugin/src/main/java/org/debian/gradle/tasks/MavenPom.java
+++ b/gradle-helper-plugin/src/main/java/org/debian/gradle/tasks/MavenPom.java
@@ -16,7 +16,6 @@
package org.debian.gradle.tasks;
-import org.apache.maven.model.Dependency;
import org.codehaus.groovy.runtime.MethodClosure;
import org.codehaus.groovy.runtime.NullObject;
import org.gradle.api.DefaultTask;
@@ -31,22 +30,67 @@ import java.util.Comparator;
public class MavenPom extends DefaultTask {
+ /* Since the Groovy in Gradle scripts are dynamically typed and due to
+ Gradle's own class loading mechanism, we couldn't cast the type of
+ org.apache.maven.model.Dependency. So we have to use Reflections. */
+ private String getMavenDependencyScope(Object dependency) {
+ String result = null;
+ try {
+ result = ((String)dependency.getClass()
+ .getMethod("getScope")
+ .invoke(dependency));
+ } finally {
+ return result;
+ }
+ }
+
+ private String getMavenDependencyGroupId(Object dependency) {
+ String result = null;
+ try {
+ result = ((String)dependency.getClass()
+ .getMethod("getGroupId")
+ .invoke(dependency));
+ } finally {
+ return result;
+ }
+ }
+
+ private String getMavenDependencyArtifactId(Object dependency) {
+ String result = null;
+ try {
+ result = ((String)dependency.getClass()
+ .getMethod("getArtifactId")
+ .invoke(dependency));
+ } finally {
+ return result;
+ }
+ }
+
+ private String getMavenDependencyVersion(Object dependency) {
+ String result = null;
+ try {
+ result = ((String)dependency.getClass()
+ .getMethod("getVersion")
+ .invoke(dependency));
+ } finally {
+ return result;
+ }
+ }
+
private void sortPomDependencies(org.gradle.api.artifacts.maven.MavenPom pom) {
Collections.sort(
pom.getDependencies(),
new Comparator<Object>() {
@Override
public int compare(Object o1, Object o2) {
- Dependency d1 = (Dependency) o1;
- Dependency d2 = (Dependency) o2;
- if (d1.getScope().compareTo(d2.getScope()) != 0) {
- return d1.getScope().compareTo(d2.getScope());
- } else if (d1.getGroupId().compareTo(d2.getGroupId()) != 0) {
- return d1.getGroupId().compareTo(d2.getGroupId());
- } else if (d1.getArtifactId().compareTo(d2.getArtifactId()) != 0) {
- return d1.getArtifactId().compareTo(d2.getArtifactId());
+ if (getMavenDependencyScope(o1).compareTo(getMavenDependencyScope(o2)) != 0) {
+ return getMavenDependencyScope(o1).compareTo(getMavenDependencyScope(o2));
+ } else if (getMavenDependencyGroupId(o1).compareTo(getMavenDependencyGroupId(o2)) != 0) {
+ return getMavenDependencyGroupId(o1).compareTo(getMavenDependencyGroupId(o2));
+ } else if (getMavenDependencyArtifactId(o1).compareTo(getMavenDependencyArtifactId(o2)) != 0) {
+ return getMavenDependencyArtifactId(o1).compareTo(getMavenDependencyArtifactId(o2));
} else {
- return d1.getVersion().compareTo(d2.getVersion());
+ return getMavenDependencyVersion(o1).compareTo(getMavenDependencyVersion(o2));
}
}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/gradle-debian-helper.git
More information about the pkg-java-commits
mailing list