[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/javaimp ec5bfd7: Improve Gradle support, remove Kotlin
From: |
Filipp Gunbin |
Subject: |
[elpa] externals/javaimp ec5bfd7: Improve Gradle support, remove Kotlin task variant |
Date: |
Wed, 27 Oct 2021 21:06:20 -0400 (EDT) |
branch: externals/javaimp
commit ec5bfd7188fb39e88e1b346a5ca4172568fe85f5
Author: Filipp Gunbin <fgunbin@fastmail.fm>
Commit: Filipp Gunbin <fgunbin@fastmail.fm>
Improve Gradle support, remove Kotlin task variant
---
.gitignore | 1 +
gradleTaskBody.inc.kts | 27 -----------------
javaimp-gradle.el | 74 ++++++++++++++--------------------------------
javaimp-init-script.gradle | 50 +++++++++++++++++++++++++++++++
4 files changed, 74 insertions(+), 78 deletions(-)
diff --git a/.gitignore b/.gitignore
index 902e9cf..fe62052 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
/javaimp-pkg.el
/javaimp-autoloads.el
*.elc
+*~
diff --git a/gradleTaskBody.inc.kts b/gradleTaskBody.inc.kts
deleted file mode 100644
index 942814f..0000000
--- a/gradleTaskBody.inc.kts
+++ /dev/null
@@ -1,27 +0,0 @@
-// use syntax which is valid both in Groovy and in Kotlin
-doLast {
- println("id=${project.group};${project.path};${project.version}")
- if (project.parent != null) {
-
println("parent-id=${project.parent.group};${project.parent.path};${project.parent.version}")
- }
- println("file=${project.buildFile}")
- println("build-dir=${project.buildDir}")
- if (project.pluginManager.hasPlugin("java")) {
- // "archives" configuration and "sourceSets" property defined by java
plugin
- println("final-name=" +
project.configurations.getByName("archives").artifacts.stream()
- .filter { it.type.equals("jar") || it.type.equals("war") }
- .map { it.file.path }
- .findFirst()
- .orElse(""))
- println("source-dirs=" + project.sourceSets.stream()
- .flatMap { it.allJava.srcDirs.stream().map { it.path } }
- .collect(Collectors.joining(File.pathSeparator)))
- println("dep-jars=" + project.sourceSets.stream()
- .flatMap { it.compileClasspath.files.stream().filter {
it.name.endsWith("jar") }.map { it.path } }
- .collect(Collectors.joining(File.pathSeparator)))
- } else {
- println("final-name=")
- println("source-dirs=")
- println("dep-jars=")
- }
-}
diff --git a/javaimp-gradle.el b/javaimp-gradle.el
index e5c3a50..d7e3753 100644
--- a/javaimp-gradle.el
+++ b/javaimp-gradle.el
@@ -20,22 +20,14 @@
(require 'javaimp-util)
-(defconst javaimp--gradle-task-body
- (with-temp-buffer
- (insert-file-contents
- (expand-file-name "gradleTaskBody.inc.kts" javaimp--basedir))
- (buffer-string))
- "Task body, uses syntax which can be used both in Groovy and Kotlin")
-
(defun javaimp--gradle-visit (file)
"Calls gradle on FILE to get various project information.
Passes specially crafted init file as -I argument to gradle and
-invokes task contained in it. This task returns all needed
+invokes task contained in it. This task outputs all needed
information."
(message "Visiting Gradle build file %s..." file)
(let* ((alists (javaimp--gradle-call file
- javaimp--gradle-task-body
#'javaimp--gradle-handler
"javaimpTask"))
(modules (mapcar (lambda (alist)
@@ -119,52 +111,32 @@ descriptor."
(defun javaimp--gradle-fetch-dep-jars-path (module)
;; Always invoke on root file becase module's file may not exist,
;; even if reported by Gradle as project.buildFile
- (javaimp--gradle-call (javaimp-module-file-orig module)
- javaimp--gradle-task-body
- (lambda ()
- (re-search-forward "^dep-jars=\\(.*\\)$")
- (match-string 1))
- (concat (if (javaimp-module-parent-id module)
- (concat ":" (javaimp-id-artifact
(javaimp-module-id module))))
- ":javaimpTask")))
-
-(defun javaimp--gradle-call (file init-script-body handler task)
- (let* ((is-kotlin (equal (file-name-extension file) "kts"))
- (init-file
- (make-temp-file "javaimp" nil
- (if is-kotlin ".kts")
- (funcall (if is-kotlin
- #'javaimp--gradle-init-script-kotlin
- #'javaimp--gradle-init-script)
- init-script-body)))
- (local-gradlew (concat (file-name-directory file) "gradlew")))
+ (javaimp--gradle-call
+ (javaimp-module-file-orig module)
+ (lambda ()
+ (re-search-forward "^dep-jars=\\(.*\\)$")
+ (match-string 1))
+ (concat (if (javaimp-module-parent-id module)
+ (concat ":" (javaimp-id-artifact (javaimp-module-id module))))
+ ":javaimpTask")))
+
+(defun javaimp--gradle-call (file handler task)
+ (let* ((local-gradlew (concat (file-name-directory file) "gradlew"))
+ (gradlew (if (file-exists-p local-gradlew)
+ local-gradlew
+ javaimp-gradle-program)))
(javaimp--call-build-tool
- (if (file-exists-p local-gradlew)
- local-gradlew
- javaimp-gradle-program)
+ gradlew
handler
"-q"
+ ;; It's easier for us to track jars instead of classes for java-library
+ ;; projects. See
+ ;;
https://docs.gradle.org/current/userguide/java_library_plugin.html#sec:java_library_classes_usage
+ "-Dorg.gradle.java.compile-classpath-packaging=true"
"-b" (javaimp-cygpath-convert-maybe file)
- "-I" (javaimp-cygpath-convert-maybe init-file)
+ "-I" (javaimp-cygpath-convert-maybe
+ (expand-file-name "javaimp-init-script.gradle"
+ javaimp--basedir))
task)))
-
-(defun javaimp--gradle-init-script (body)
- (concat "
-import java.io.File
-import java.util.stream.Collectors
-allprojects {
- task javaimpTask {"
- body
- "} }"))
-
-(defun javaimp--gradle-init-script-kotlin (body)
- (concat "
-import java.io.File
-import java.util.stream.Collectors
-allprojects {
- tasks.register(\"javaimpTask\") {"
- body
- "} }"))
-
(provide 'javaimp-gradle)
diff --git a/javaimp-init-script.gradle b/javaimp-init-script.gradle
new file mode 100644
index 0000000..096fb52
--- /dev/null
+++ b/javaimp-init-script.gradle
@@ -0,0 +1,50 @@
+import java.io.File
+import java.util.stream.Collectors
+
+allprojects {
+ task javaimpTask {
+ doLast {
+ println("id=${project.group};${project.path};${project.version}")
+ if (project.parent != null) {
+ print("parent-id=${project.parent.group};")
+ println("${project.parent.path};${project.parent.version}")
+ }
+ println("file=${project.buildFile}")
+ println("build-dir=${project.buildDir}")
+
+ String finalName = ""
+ String sourceDirs = ""
+ String depJars = ""
+ if (project.pluginManager.hasPlugin("java")) {
+ // "archives" configuration and "sourceSets" property
+ // are defined by Java plugin
+
+ finalName =
project.configurations.getByName("archives").artifacts.stream()
+ .filter {
+ it.type.equals("jar") || it.type.equals("war")
+ }
+ .map { it.file.path }
+ .findFirst()
+ .orElse("")
+ sourceDirs = project.sourceSets.stream()
+ .flatMap {
+ it.allJava.srcDirs.stream()
+ .map { it.path }
+ }
+ .collect(Collectors.joining(File.pathSeparator))
+ depJars = project.sourceSets.stream()
+ .flatMap {
+ it.compileClasspath.files.stream()
+ .filter {
+ it.name.endsWith("jar")
+ }
+ .map { it.path }
+ }
+ .collect(Collectors.joining(File.pathSeparator))
+ }
+ println("final-name=${finalName}")
+ println("source-dirs=${sourceDirs}")
+ println("dep-jars=${depJars}")
+ }
+ }
+}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [elpa] externals/javaimp ec5bfd7: Improve Gradle support, remove Kotlin task variant,
Filipp Gunbin <=