Skip to content

Commit 284758c

Browse files
authored
Merge pull request #125 from prokod/release/0.14.1
Release/0.14.1
2 parents 73c75f9 + 1b11c16 commit 284758c

File tree

7 files changed

+117
-70
lines changed

7 files changed

+117
-70
lines changed

README.md

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525

2626
```groovy
2727
plugins {
28-
id "com.github.prokod.gradle-crossbuild-scala" version "0.14.0"
28+
id "com.github.prokod.gradle-crossbuild-scala" version "0.14.1"
2929
}
3030
```
3131

@@ -34,7 +34,7 @@ plugins {
3434
```groovy
3535
buildscript {
3636
dependencies {
37-
classpath("com.github.prokod:gradle-crossbuild-scala:0.14.0")
37+
classpath("com.github.prokod:gradle-crossbuild-scala:0.14.1")
3838
}
3939
}
4040
```
@@ -64,10 +64,13 @@ This is especially true for multi module projects but not just.<br/>
6464

6565
> **NOTE:** cross build artifact naming is governed by `archive.appendixPattern` which by default is `_?` meaning for example, that module `lib` will be resolved to `lib_2.11`/`_2.12`/`...` according to the correlating `crossBuild {}` plugin dsl block
6666
67-
- To test that everything works as expected, both `gradle build` (which also runs the tests) and `gradle publishToMavenLocal` (which goes from cross building, artifact creation and publishing) should succeed.
68-
69-
> **NOTE:** Look under ~/.m2/repository/... to assert the end result is the one you have wished for.<br/>
67+
- To test that everything works as expected:
68+
1. `gradle build` - which runs build and tests for a single Scala version - default one.
69+
1. `gradle crossBuildAssemble` - which builds ans assembles **all** cross build into respective artifacts.
70+
1. `gradle publishToMavenLocal` - which goes from cross building, artifact creation (as above) and then publishing to local maven.
7071

72+
> **NOTE:** Look under `build/libs` , `~/.m2/repository/...` respectively, to assert the end result is the one you have wished for. `crossBuildAssemble` task is available from version **`0.14.1`**
73+
7174
### Multi-module projects and applying cross build plugin only for some
7275

7376
From version **`0.11.x`** the plugin supports multi-module projects where **only** some modules have cross build plugin applied to.<br/>
@@ -379,7 +382,7 @@ dependencies {
379382
380383
- **Cross building DSL programmatically** - In the next code snippet you can observe how programmatically we are generating cross builds using the plugin DSL.
381384
- **Extra properties per cross build** - Not only the cross building is described in a programmatic manner, you can also observe that specific unique meta data for each cross build permutation is generated using the plugin's `ext` entry
382-
> **NOTE:** Supported in the plugin from version `0.14.x` onwards
385+
> **NOTE:** The plugin injects a default extra property that holds the value of the respective Scala Compiler Version, named `scalaCompilerVersion`. This feature is supported in the plugin from version `0.14.x` onwards.
383386
384387
```groovy
385388
...
@@ -567,7 +570,7 @@ apply plugin: 'com.github.prokod.gradle-crossbuild-scala'
567570

568571
```groovy
569572
plugins {
570-
id "com.github.prokod.gradle-crossbuild-scala" version '0.14.0' apply false
573+
id "com.github.prokod.gradle-crossbuild-scala" version '0.14.1' apply false
571574
}
572575
573576
allprojects {

build.gradle

Lines changed: 68 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -5,44 +5,34 @@ plugins {
55

66
apply plugin: 'groovy'
77
apply plugin: 'java-gradle-plugin'
8-
apply plugin: 'maven'
8+
apply plugin: 'maven-publish'
99
apply plugin: 'signing'
1010
apply plugin: 'codenarc'
1111

1212
group = 'com.github.prokod'
13-
version = '0.14.0'
13+
version = '0.14.1'
1414

1515
repositories {
1616
jcenter()
1717
}
1818

19-
task javadocJar(type: Jar) {
20-
classifier = 'javadoc'
21-
from javadoc
19+
task sourcesJar(type: Jar) {
20+
from sourceSets.main.allSource
21+
archiveClassifier = 'sources'
2222
}
2323

24-
task sourcesJar(type: Jar, dependsOn: classes) {
25-
classifier = 'sources'
26-
from sourceSets.main.allSource
24+
task javadocJar(type: Jar) {
25+
from javadoc
26+
archiveClassifier = 'javadoc'
2727
}
2828

2929
apply from: 'codecov.gradle'
3030

31-
artifacts {
32-
archives javadocJar
33-
archives sourcesJar
34-
}
35-
3631
//Conditional Signing
3732
ext {
3833
isReleaseVersion = !version.endsWith("SNAPSHOT")
3934
}
4035

41-
signing {
42-
required { isReleaseVersion && gradle.taskGraph.hasTask("uploadArchives") }
43-
sign configurations.archives
44-
}
45-
4636
dependencies {
4737
implementation gradleApi()
4838
implementation localGroovy()
@@ -84,46 +74,73 @@ pluginBundle {
8474
}
8575
}
8676

87-
uploadArchives.repositories.mavenDeployer {
88-
beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }
89-
90-
snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") {
91-
authentication(userName: ossrhUsername, password: ossrhPassword)
92-
}
93-
94-
repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") {
95-
authentication(userName: ossrhUsername, password: ossrhPassword)
96-
}
97-
98-
pom.project {
99-
name 'Gradle cross build (Scala) plugin'
100-
packaging 'jar'
101-
description 'Gradle cross build (Scala) plugin.'
102-
url 'https://github.com/prokod/gradle-crossbuild-scala'
103-
inceptionYear '2016'
104-
105-
scm {
106-
developerConnection '[email protected]:prokod/gradle-crossbuild-scala.git'
107-
connection 'git://github.com/prokod/gradle-crossbuild-scala.git'
108-
url 'https://github.com/prokod/gradle-crossbuild-scala'
109-
}
110-
111-
licenses {
112-
license {
113-
name 'Apache License 2.0'
114-
url 'https://www.apache.org/licenses/LICENSE-2.0'
77+
publishing {
78+
publications {
79+
mavenJava(MavenPublication) {
80+
from components.java
81+
artifact sourcesJar {
82+
classifier 'sources'
83+
}
84+
artifact javadocJar {
85+
classifier 'javadoc'
86+
}
87+
versionMapping {
88+
usage('java-api') {
89+
fromResolutionOf('runtimeClasspath')
90+
}
91+
usage('java-runtime') {
92+
fromResolutionResult()
93+
}
94+
}
95+
pom {
96+
name = 'Gradle cross build (Scala) plugin'
97+
description = 'Gradle cross build (Scala) plugin.'
98+
url = 'https://github.com/prokod/gradle-crossbuild-scala'
99+
inceptionYear = '2016'
100+
packaging = 'jar'
101+
102+
licenses {
103+
license {
104+
name = 'Apache License 2.0'
105+
url = 'https://www.apache.org/licenses/LICENSE-2.0'
106+
}
107+
}
108+
developers {
109+
developer {
110+
id = 'noamasor'
111+
name = 'Noam Asor'
112+
113+
}
114+
}
115+
scm {
116+
developerConnection = '[email protected]:prokod/gradle-crossbuild-scala.git'
117+
connection = 'git://github.com/prokod/gradle-crossbuild-scala.git'
118+
url = 'https://github.com/prokod/gradle-crossbuild-scala'
119+
}
115120
}
116121
}
117-
developers {
118-
developer {
119-
id 'noamasor'
120-
name 'Noam Asor'
121-
122+
}
123+
repositories {
124+
maven {
125+
credentials {
126+
username ossrhUsername
127+
password ossrhPassword
122128
}
129+
// change URLs to point to your repos, e.g. http://my.org/repo
130+
def releasesRepoUrl = "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
131+
def snapshotsRepoUrl = "https://oss.sonatype.org/content/repositories/snapshots/"
132+
url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl
123133
}
124134
}
125135
}
126136

137+
signing {
138+
def required = { isReleaseVersion && gradle.taskGraph.hasTask("publish") }
139+
if (required) {
140+
sign publishing.publications.mavenJava
141+
}
142+
}
143+
127144
codenarc {
128145
toolVersion = "1.1"
129146
}

gradle/wrapper/gradle-wrapper.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
33
zipStoreBase=GRADLE_USER_HOME
44
zipStorePath=wrapper/dists
5-
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6-all.zip
5+
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip

src/main/groovy/com/github/prokod/gradle/crossbuild/CrossBuildExtension.groovy

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import com.github.prokod.gradle.crossbuild.model.BuildUpdateEventStore
2222
import com.github.prokod.gradle.crossbuild.model.DependencyLimitedInsight
2323
import com.github.prokod.gradle.crossbuild.model.EventType
2424
import com.github.prokod.gradle.crossbuild.model.ResolvedBuildAfterEvalLifeCycle
25+
import com.github.prokod.gradle.crossbuild.tasks.AbstractCrossBuildsReportTask
2526
import com.github.prokod.gradle.crossbuild.utils.LoggerUtils
2627
import org.gradle.api.Action
2728
import org.gradle.api.JavaVersion
@@ -148,7 +149,10 @@ class CrossBuildExtension {
148149
def (String sourceSetId, SourceSet sourceSet) =
149150
crossBuildSourceSets.findByName(rb.name)
150151

152+
def assembleTask = project.tasks.findByName("${AbstractCrossBuildsReportTask.BASE_TASK_NAME}Assemble")
151153
def scalaJar = createArtifact(sourceSet, rb)
154+
assembleTask.dependsOn(scalaJar)
155+
152156
// Runtime
153157
def outgoingConfigurationRuntime =
154158
configureOutgoingConfiguration(sourceSet.getRuntimeElementsConfigurationName(),
@@ -183,8 +187,8 @@ class CrossBuildExtension {
183187
Jar createArtifact(SourceSet sourceSet, ResolvedBuildAfterEvalLifeCycle rb) {
184188
def scalaJar = project.tasks.create(sourceSet.getJarTaskName(), Jar) { Jar jar ->
185189
jar.group = BasePlugin.BUILD_GROUP
186-
jar.description = 'Assembles a jar archive containing ' +
187-
"${rb.scalaVersionInsights.strippedArtifactInlinedVersion} classes"
190+
jar.description = 'Assembles a jar archive containing the ' +
191+
"${sourceSet.name} classes"
188192
jar.archiveBaseName.set(archiveBaseName.get() + rb.archive.appendix)
189193
jar.from sourceSet.output
190194
}

src/main/groovy/com/github/prokod/gradle/crossbuild/CrossBuildPlugin.groovy

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import com.github.prokod.gradle.crossbuild.utils.LoggerUtils
2727
import com.github.prokod.gradle.crossbuild.utils.SourceSetInsights
2828
import com.github.prokod.gradle.crossbuild.utils.ViewType
2929
import com.github.prokod.gradle.crossbuild.utils.UniSourceSetInsights
30+
import org.gradle.api.DefaultTask
3031
import org.gradle.api.model.ObjectFactory
3132
import org.gradle.api.publish.maven.tasks.GenerateMavenPom
3233

@@ -72,6 +73,13 @@ class CrossBuildPlugin implements Plugin<Project> {
7273
t.description = 'Summary report for cross building resolved Configurations'
7374
}
7475

76+
project.task(type:DefaultTask,
77+
"${AbstractCrossBuildsReportTask.BASE_TASK_NAME}Assemble") { DefaultTask t ->
78+
t.description = 'Assembles all the ' +
79+
AbstractCrossBuildsReportTask.BASE_TASK_NAME + ' outputs of this project'
80+
t.group = AbstractCrossBuildsReportTask.TASK_GROUP
81+
}
82+
7583
project.afterEvaluate {
7684
updateSourceBuildSourceSets(extension)
7785

src/main/groovy/com/github/prokod/gradle/crossbuild/model/ExtUpdateEvent.groovy

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,21 @@ class ExtUpdateEvent {
2626
final EventType eventType
2727

2828
ExtUpdateEvent(Map<String, Object> source) {
29-
this.source = source == null ? [:] : source.clone()
29+
def clone = { Map<String, Object> orig ->
30+
def cloneObject = { Object origObj ->
31+
def bos = new ByteArrayOutputStream()
32+
def oos = new ObjectOutputStream(bos)
33+
oos.writeObject(origObj)
34+
oos.flush()
35+
def bin = new ByteArrayInputStream(bos.toByteArray())
36+
def ois = new ObjectInputStream(bin)
37+
ois.readObject()
38+
}
39+
40+
orig.collect { new Tuple2<String, Object>(new String(it.key), cloneObject(it.value)) }.collectEntries()
41+
}
42+
43+
this.source = source == null ? [:] : clone(source)
3044
this.eventType = EventType.EXT_UPDATE
3145
}
3246
}

src/test/groovy/com/github/prokod/gradle/crossbuild/CrossBuildPluginTest.groovy

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ crossBuild {
6363
result.output.contains("""
6464
Crossbuilding tasks
6565
-------------------
66+
crossBuildAssemble - Assembles all the crossBuild outputs of this project
6667
crossBuildResolvedConfigs - Summary report for cross building resolved Configurations
6768
crossBuildResolvedDsl - Summary report for cross building resolved Dsl
6869
""")
@@ -435,21 +436,21 @@ crossBuild {
435436
then:
436437
result.output.contains("""
437438
crossBuildSpark24_211Classes - Assembles cross build spark24 211 classes.
438-
crossBuildSpark24_211Jar - Assembles a jar archive containing 211 classes
439+
crossBuildSpark24_211Jar - Assembles a jar archive containing the crossBuildSpark24_211 classes
439440
crossBuildSpark24_212Classes - Assembles cross build spark24 212 classes.
440-
crossBuildSpark24_212Jar - Assembles a jar archive containing 212 classes
441+
crossBuildSpark24_212Jar - Assembles a jar archive containing the crossBuildSpark24_212 classes
441442
crossBuildV210Classes - Assembles cross build v210 classes.
442-
crossBuildV210Jar - Assembles a jar archive containing 210 classes
443+
crossBuildV210Jar - Assembles a jar archive containing the crossBuildV210 classes
443444
crossBuildV211_211Classes - Assembles cross build v211 211 classes.
444-
crossBuildV211_211Jar - Assembles a jar archive containing 211 classes
445+
crossBuildV211_211Jar - Assembles a jar archive containing the crossBuildV211_211 classes
445446
crossBuildV211_212Classes - Assembles cross build v211 212 classes.
446-
crossBuildV211_212Jar - Assembles a jar archive containing 212 classes
447+
crossBuildV211_212Jar - Assembles a jar archive containing the crossBuildV211_212 classes
447448
crossBuildV211_A_211Classes - Assembles cross build v211 a 211 classes.
448-
crossBuildV211_A_211Jar - Assembles a jar archive containing 211 classes
449+
crossBuildV211_A_211Jar - Assembles a jar archive containing the crossBuildV211_A_211 classes
449450
crossBuildV212_213Classes - Assembles cross build v212 213 classes.
450-
crossBuildV212_213Jar - Assembles a jar archive containing 213 classes
451+
crossBuildV212_213Jar - Assembles a jar archive containing the crossBuildV212_213 classes
451452
crossBuildV213Classes - Assembles cross build v213 classes.
452-
crossBuildV213Jar - Assembles a jar archive containing 213 classes
453+
crossBuildV213Jar - Assembles a jar archive containing the crossBuildV213 classes
453454
""")
454455
result.task(":tasks").outcome == SUCCESS
455456

0 commit comments

Comments
 (0)