10000 playing around with re-adapted early-prototype declarative Gradle · scijava/pom-scijava@d261125 · GitHub
[go: up one dir, main page]

Skip to content

Commit d261125

Browse files
elect86ctrueden
authored andcommitted
playing around with re-adapted early-prototype declarative Gradle
1 parent 69fc630 commit d261125

33 files changed

+686
-17
lines changed

.idea/compiler.xml

Lines changed: 2 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/gradle.xml

Lines changed: 31 additions & 13 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/modules.xml

Copy file name to clipboard
Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/modules/declarative/buildSrc/declarative.buildSrc.main.iml

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

gradle/declarative/build.gradle.kts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
//import org.gradle.api.experimental.java.javaLibrary
2+
3+
plugins {
4+
5+
}
6+
7+
//javaLibrary {
8+
// javaVersion = 11
9+
//}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
plugins {
2+
`kotlin-dsl`
3+
}
4+
5+
repositories {
6+
mavenCentral()
7+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
rootProject.name = "buildSrc"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package org.gradle.api.experimental.common
2+
3+
import org.gradle.api.artifacts.dsl.Dependencies
4+
import org.gradle.api.artifacts.dsl.DependencyCollector
5+
import org.gradle.declarative.dsl.model.annotations.Restricted
6+
7+
/**
8+
* The declarative dependencies DSL block for an application.
9+
*/
10+
@Restricted
11+
interface ApplicationDependencies : Dependencies {
12+
val implementation: DependencyCollector
13+
val runtimeOnly: DependencyCollector
14+
val compileOnly: DependencyCollector
15+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package org.gradle.api.experimental.common
2+
3+
import org.gradle.api.artifacts.dsl.Dependencies
4+
import org.gradle.api.artifacts.dsl.DependencyCollector
5+
import org.gradle.declarative.dsl.model.annotations.Restricted
6+
7+
/**
8+
* The declarative dependencies DSL block for a library.
9+
*/
10+
@Restricted
11+
interface LibraryDependencies : Dependencies {
12+
val api: DependencyCollector
13+
val implementation: DependencyCollector
14+
val runtimeOnly: DependencyCollector
15+
val compileOnly: DependencyCollector
16+
// CompileOnlyApi is not included here, since both Android and KMP do not support it.
17+
// Does that mean we should also reconsider if we should support it? Or, should we
18+
// talk to Android and KMP about adding support
19+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package org.gradle.api.experimental.java
2+
3+
import org.gradle.api.experimental.jvm.HasJavaTarget
4+
import org.gradle.api.experimental.jvm.HasJvmApplication
5+
import org.gradle.declarative.dsl.model.annotations.Restricted
6+
7+
/**
8+
* An application implemented using a single version of Java.
9+
*/
10+
@Restricted
11+
interface JavaApplication : HasJavaTarget, HasJvmApplication
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package org.gradle.api.experimental.java
2+
3+
import org.gradle.api.experimental.common.LibraryDependencies
4+
import org.gradle.api.experimental.jvm.HasJavaTarget
5+
import org.gradle.api.experimental.jvm.HasJvmLibrary
6+
import org.gradle.api.provider.Property
7+import org.gradle.declarative.dsl.model.annotations.Restricted
8+
9+
/**
10+
* A library implemented using a single version of Java.
11+
*/
12+
@Restricted
13+
interface JavaLibrary : HasJavaTarget, HasJvmLibrary
14+
15+
//inline fun javaLibrary(block: JavaLibrary.() -> Unit): JavaLibrary {
16+
// return object : JavaLibrary{
17+
// override val javaVersion: Property<Int> = Property
18+
// override val dependencies: LibraryDependencies
19+
// get() = TODO("Not yet implemented")
20+
//
21+
// }.also(block)
22+
//}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package org.gradle.api.experimental.java
2+
3+
import org.gradle.api.Plugin
4+
import org.gradle.api.Project
5+
import org.gradle.api.experimental.jvm.internal.JvmPluginSupport
6+
import org.gradle.api.internal.plugins.software.SoftwareType
7+
import org.gradle.api.plugins.ApplicationPlugin
8+
9+
/**
10+
* Creates a declarative [JavaApplication] DSL model, applies the official Java application plugin,
11+
* and links the declarative model to the official plugin.
12+
*/
13+
abstract class StandaloneJavaApplicationPlugin : Plugin<Project> {
14+
@get:SoftwareType(name = "javaApplication", modelPublicType = JavaA 2851 pplication::class)
15+
abstract val application: JavaApplication
16+
17+
override fun apply(project: Project) {
18+
val dslModel = application
19+
20+
project.plugins.apply(ApplicationPlugin::class.java)
21+
22+
linkDslModelToPlugin(project, dslModel)
23+
}
24+
25+
private fun linkDslModelToPlugin(project: Project, dslModel: JavaApplication) {
26+
JvmPluginSupport.linkJavaVersion(project, dslModel)
27+
JvmPluginSupport.linkApplicationMainClass(project, dslModel)
28+
JvmPluginSupport.linkMainSourceSourceSetDependencies(project, dslModel.dependencies)
29+
}
30+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package org.gradle.api.experimental.java
2+
3+
import org.gradle.api.Plugin
4+
import org.gradle.api.Project
5+
import org.gradle.api.experimental.jvm.internal.JvmPluginSupport
6+
import org.gradle.api.internal.plugins.software.SoftwareType
7+
import org.gradle.api.plugins.JavaLibraryPlugin
8+
9+
/**
10+
* Creates a declarative [JavaLibrary] DSL model, applies the official Java library plugin,
11+
* and links the declarative model to the official plugin.
12+
*/
13+
abstract class StandaloneJavaLibraryPlugin : Plugin<Project> {
14+
@get:SoftwareType(name = "javaLibrary", modelPublicType = JavaLibrary::class) abstract val library: JavaLibrary
15+
16+
override fun apply(project: Project) {
17+
val dslModel = library
18+
19+
project.plugins.apply(JavaLibraryPlugin::class.java)
20+
21+
linkDslModelToPlugin(project, dslModel)
22+
}
23+
24+
private fun linkDslModelToPlugin(project: Project, dslModel: JavaLibrary) {
25+
JvmPluginSupport.linkJavaVersion(project, dslModel)
26+
JvmPluginSupport.linkMainSourceSourceSetDependencies(project, dslModel.dependencies)
27+
}
28+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package org.gradle.api.experimental.jvm
2+
3+
import org.gradle.api.provider.Property
4+
import org.gradle.declarative.dsl.model.annotations.Restricted
5+
6+
/**
7+
* A component that is built for a single Java version.
8+
*/
9+
@Restricted
10+
interface HasJavaTarget {
11+
@get:Restricted
12+
val javaVersion: Property<Int>
13+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package org.gradle.api.experimental.jvm
2+
3+
import org.gradle.api.Action
4+
import org.gradle.api.tasks.Nested
5+
import org.gradle.declarative.dsl.model.annotations.Configuring
6+
import org.gradle.declarative.dsl.model.annotations.Restricted
7+
8+
/**
9+
* A component that is built for multiple Java versions.
10+
*/
11+
@Restricted
12+
interface HasJavaTargets {
13+
@get:Nested
14+
val targets: JvmTargetContainer
15+
16+
@Configuring
17+
fun targets(action: Action<in JvmTargetContainer>) = action.execute(targets)
18+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package org.gradle.api.experimental.jvm
2+
3+
import org.gradle.api.Action
4+
import org.gradle.api.experimental.common.ApplicationDependencies
5+
import org.gradle.api.provider.Property
6+
import org.gradle.api.tasks.Nested
7+
import org.gradle.declarative.dsl.model.annotations.Configuring
8+
import org.gradle.declarative.dsl.model.annotations.Restricted
9+
10+
/**
11+
* Represents an application that runs on the JVM.
12+
*/
13+
@Restricted
14+
interface HasJvmApplication {
15+
@get:Restricted
16+
val mainClass: Property<String>
17+
18+
@get:Nested
19+
val dependencies: ApplicationDependencies
20+
21+
@Configuring
22+
fun dependencies(action: Action<in ApplicationDependencies>) = action.execute(dependencies)
23+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package org.gradle.api.experimental.jvm
2+
3+
import org.gradle.api.Action
4+
import org.gradle.api.experimental.common.LibraryDependencies
5+
import org.gradle.api.tasks.Nested
6+
import org.gradle.declarative.dsl.model.annotations.Configuring
7+
import org.gradle.declarative.dsl.model.annotations.Restricted
8+
9+
/**
10+
* Represents a library that runs on the JVM.
11+
*/
12+
@Restricted
13+
interface HasJvmLibrary {
14+
@get:Nested
15+
val dependencies: LibraryDependencies
16+
17+
@Configuring
18+
fun dependencies(action: Action<in LibraryDependencies>) = action.execute(dependencies)
19+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package org.gradle.api.experimental.jvm
2+
3+
import org.gradle.api.Named
4+
5+
abstract class JavaTarget(val javaVersion: Int) : JvmTarget, Named {
6+
override fun getName(): String = "java$javaVersion"
7+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package org.gradle.api.experimental.jvm
2+
3+
/**
4+
* An application that runs on the JVM and that is implemented using one or more versions of Java.
5+
*/
6+
interface JvmApplication : HasJavaTargets, HasJvmApplication
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package org.gradle.api.experimental.jvm
2+
3+
import org.gradle.api.Plugin
4+
import org.gradle.api.experimental.java.StandaloneJavaApplicationPlugin
5+
import org.gradle.api.experimental.java.StandaloneJavaLibraryPlugin
6+
import org.gradle.api.initialization.Settings
7+
import org.gradle.api.internal.plugins.software.RegistersSoftwareTypes
8+
9+
@RegistersSoftwareTypes(StandaloneJavaApplicationPlugin::class,
10+
StandaloneJavaLibraryPlugin::class,
11+
StandaloneJvmLibraryPlugin::class,
12+
StandaloneJvmApplicationPlugin::class)
13+
class JvmEcosystemPlugin : Plugin<Settings> {
14+
override fun apply(target: Settings) {}
15+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package org.gradle.api.experimental.jvm
2+
3+
import org.gradle.declarative.dsl.model.annotations.Restricted
4+
5+
/**
6+
* A library that runs on the JVM and that is implemented using one or more versions of Java.
7+
*/
8+
@Restricted
9+
interface JvmLibrary : HasJavaTargets, HasJvmLibrary
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package org.gradle.api.experimental.jvm
2+
3+
import org.gradle.api.Action
4+
import org.gradle.api.Named
5+
import org.gradle.api.experimental.common.LibraryDependencies
6+
import org.gradle.api.tasks.Nested
7+
import org.gradle.declarative.dsl.model.annotations.Configuring
8+
import org.gradle.declarative.dsl.model.annotations.Restricted
9+
10+
@Restricted
11+
interface JvmTarget : Named {
12+
@get:Nested
13+
val dependencies: LibraryDependencies
14+
15+
@Configuring
16+
fun dependencies(action: Action<in LibraryDependencies>) = action.execute(dependencies)
17+
}

0 commit comments

Comments
 (0)
0