matrei commented on code in PR #5:
URL: 
https://github.com/apache/incubator-grails-gradle-publish/pull/5#discussion_r2259754997


##########
plugin/src/test/groovy/org/apache/grails/gradle/publish/GrailsPublishGradlePluginTest.groovy:
##########
@@ -19,24 +19,77 @@
 
 package org.apache.grails.gradle.publish
 
+import org.gradle.api.GradleException
+import org.gradle.api.internal.project.ProjectInternal
 import org.gradle.testfixtures.ProjectBuilder
 import spock.lang.Specification
 
 class GrailsPublishGradlePluginTest extends Specification {
 
-    def 'plugin registers release task for release version'() {
+    def "requires java or java platform plugin"() {
         given:
         def project = ProjectBuilder.builder().build()
         project.version = '1.0.0'
 
         when:
         project.plugins.apply('org.apache.grails.gradle.grails-publish')
+        ((ProjectInternal) project).evaluate()
 
         then:
-        project.tasks.findByName('retrieveSonatypeStagingProfile') != null
+        def ge = thrown(GradleException)
+        ge.cause.message == "Grails Publish Plugin requires the Java Platform 
or Java Plugin to be applied to the project."
     }
 
-    def 'plugin registers release task for snapshot version'() {
+    def 'apply only: plugin registers release task for release version'() {
+        given:
+        def project = ProjectBuilder.builder().build()
+        project.version = '1.0.0'
+
+        when:
+        project.plugins.apply('org.apache.grails.gradle.grails-publish')
+
+        then:
+        project.tasks.names.toList() == ["assemble", "build", "check", 
"clean", "closeAndReleaseSonatypeStagingRepository",
+                                         "closeAndReleaseStagingRepositories", 
"closeSonatypeStagingRepository", "closeStagingRepositories",
+                                         "findSonatypeStagingRepository", 
"initializeSonatypeStagingRepository", "publish", "publishToMavenLocal",
+                                         "releaseSonatypeStagingRepository", 
"releaseStagingRepositories", "retrieveSonatypeStagingProfile"]

Review Comment:
   ```suggestion
           project.tasks.names.toList() == [
                   'assemble',
                   'build',
                   'check',
                   'clean',
                   'closeAndReleaseSonatypeStagingRepository',
                   'closeAndReleaseStagingRepositories',
                   'closeSonatypeStagingRepository',
                   'closeStagingRepositories',
                   'findSonatypeStagingRepository',
                   'initializeSonatypeStagingRepository',
                   'publish',
                   'publishToMavenLocal',
                   'releaseSonatypeStagingRepository',
                   'releaseStagingRepositories',
                   'retrieveSonatypeStagingProfile',
           ]
   ```



##########
plugin/src/main/groovy/org/apache/grails/gradle/publish/GrailsPublishGradlePlugin.groovy:
##########
@@ -512,13 +546,16 @@ Note: if project properties are used, the properties must 
be defined prior to ap
         }
 
         SourceSetContainer sourceSets = findSourceSets(project)
-        if (!sourceSets.main.hasProperty('groovy')) {
+
+        SourceSet main = sourceSets.named('main').get()
+        GroovySourceDirectorySet groovy = 
main.getExtensions().findByType(GroovySourceDirectorySet)

Review Comment:
   ```suggestion
           def main = sourceSets.named('main').get()
           def groovy = main.extensions.findByType(GroovySourceDirectorySet)
   ```



##########
plugin/src/main/groovy/org/apache/grails/gradle/publish/GrailsPublishGradlePlugin.groovy:
##########
@@ -250,192 +271,158 @@ Note: if project properties are used, the properties 
must be defined prior to ap
 
             validateProjectPublishable(project as Project)
 
-            project.publishing {
+            project.extensions.configure(PublishingExtension) { 
PublishingExtension pe ->
                 final GrailsPublishExtension gpe = 
extensionContainer.findByType(GrailsPublishExtension)
 
                 final def mavenPublishUrl = 
project.findProperty('mavenPublishUrl') ?: System.getenv('MAVEN_PUBLISH_URL')
                 if (useMavenPublish) {
                     
System.setProperty('org.gradle.internal.publish.checksums.insecure', true as 
String)
 
-                    repositories {
-                        maven {
+                    pe.repositories { RepositoryHandler repoHandler ->
+                        repoHandler.maven { MavenArtifactRepository repo ->
                             final String mavenPublishUsername = 
project.findProperty('mavenPublishUsername') ?: 
System.getenv('MAVEN_PUBLISH_USERNAME')
                             final String mavenPublishPassword = 
project.findProperty('mavenPublishPassword') ?: 
System.getenv('MAVEN_PUBLISH_PASSWORD')
                             if (mavenPublishUsername && mavenPublishPassword) {
-                                credentials {
-                                    username = mavenPublishUsername
-                                    password = mavenPublishPassword
+                                repo.credentials { PasswordCredentials 
credentials ->
+                                    credentials.username = mavenPublishUsername
+                                    credentials.password = mavenPublishPassword
                                 }
                             }
-                            url = mavenPublishUrl
+                            repo.url = mavenPublishUrl
+                            repo.name = 'maven'
                         }
 
                         def testRepoPath = gpe.testRepositoryPath.getOrNull()
                         if (testRepoPath) {
-                            maven {
-                                name = 'TestCaseMavenRepo'
-                                url = testRepoPath
+                            repoHandler.maven { MavenArtifactRepository repo ->
+                                repo.name = 'TestCaseMavenRepo'
+                                repo.url = testRepoPath
                             }
                         }
                     }
                 } else {
                     // This is a local publish. Add the test case repository 
if it's defined on the extension.
                     def testRepoPath = gpe.testRepositoryPath.getOrNull()
                     if (testRepoPath) {
-                        repositories {
-                            maven {
-                                name = 'TestCaseMavenRepo'
-                                url = testRepoPath
+                        pe.repositories { RepositoryHandler repoHandler ->
+                            repoHandler.maven { MavenArtifactRepository repo ->
+                                repo.name = 'TestCaseMavenRepo'
+                                repo.url = testRepoPath
                             }
                         }
                     }
                 }
 
-                publications {
-                    it.create(gpe.publicationName.get(), MavenPublication) {
-                        delegate.artifactId = gpe.artifactId.get()
-                        delegate.groupId = gpe.groupId.get()
+                pe.publications { PublicationContainer publications ->
+                    publications.create(gpe.publicationName.get(), 
MavenPublication) { MavenPublication publication ->
+                        publication.artifactId = gpe.artifactId.get()
+                        publication.groupId = gpe.groupId.get()
 
                         if (gpe.addComponents.get()) {
-                            doAddArtefact(project, delegate)
+                            doAddArtefact(project, publication)
                             def extraArtefact = 
getDefaultExtraArtifact(project)
                             if (extraArtefact) {
-                                artifact extraArtefact
+                                publication.artifact(extraArtefact)
                             }
                         }
 
-                        pom.withXml {
-                            Node pomNode = asNode()
-
-                            if 
(!project.extensions.findByType(JavaPlatformExtension)) {
-                                // Prevent multiple dependencyManagement nodes
-                                if (pomNode.dependencyManagement) {
-                                    
pomNode.dependencyManagement[0].replaceNode {}
-                                }
-                            }
-
-                            if (gpe != null) {
-                                pomNode.children().last() + {
-                                    delegate.name gpe.title.get()
-                                    delegate.description gpe.desc.get()
-                                    delegate.url gpe.websiteUrl.get()
-
-                                    def license = gpe.license
-                                    if (license != null) {
-                                        def concreteLicense = 
GrailsPublishExtension.License.LICENSES.get(license.name)
-                                        if (concreteLicense != null) {
-                                            delegate.licenses {
-                                                delegate.license {
-                                                    delegate.name 
concreteLicense.name
-                                                    delegate.url 
concreteLicense.url
-                                                    delegate.distribution 
concreteLicense.distribution
-                                                }
-                                            }
-                                        } else if (license.name && 
license.url) {
-                                            delegate.licenses {
-                                                delegate.license {
-                                                    delegate.name license.name
-                                                    delegate.url license.url
-                                                    delegate.distribution 
license.distribution
-                                                }
-                                            }
+                        publication.pom { MavenPom pom ->
+                            pom.name.set(gpe.title.get())
+                            pom.description.set(gpe.desc.get())
+                            pom.url.set(gpe.websiteUrl.get())

Review Comment:
   ```suggestion
                               pom.name.set(gpe.title)
                               pom.description.set(gpe.desc)
                               pom.url.set(gpe.websiteUrl)
   ```
   Is a `Provider` acceptable as a parameter to `.set()` here?



##########
plugin/src/test/groovy/org/apache/grails/gradle/publish/GrailsPublishGradlePluginTest.groovy:
##########
@@ -45,6 +98,37 @@ class GrailsPublishGradlePluginTest extends Specification {
         project.plugins.apply('org.apache.grails.gradle.grails-publish')
 
         then:
-        project.tasks.findByName('publish') != null
+        project.tasks.names.toList() == ['publish', 'publishToMavenLocal']
+    }
+
+    def 'evaluate:  plugin registers release task for snapshot version'() {
+        given:
+        def project = ProjectBuilder.builder().build()
+        project.version = '1.0.0-SNAPSHOT'
+
+        and:
+        project.plugins.apply('org.apache.grails.gradle.grails-publish')
+        project.plugins.apply('java')
+
+        and:
+        GrailsPublishExtension gpe = 
project.extensions.getByType(GrailsPublishExtension)
+        gpe.githubSlug.set('apache/grails-gradle-publish')
+        gpe.license {
+            name = 'Apache-2.0'
+        }
+        gpe.title.set('Grails Gradle Publish Plugin')
+        gpe.desc.set('A plugin to assist in publishing Grails artifacts')
+        gpe.developers.set(['jdaugherty': 'James Daugherty'])
+
+        when:
+        ((ProjectInternal) project).evaluate()
+
+        then:
+        project.tasks.names.toList() == ["artifactTransforms", "assemble", 
"build", "buildDependents", "buildEnvironment", "buildNeeded", "check", 
"classes", "clean", "compileJava",
+                                         "compileTestJava", "components", 
"dependencies", "dependencyInsight", "dependentComponents", 
"generateMetadataFileForMavenPublication",
+                                         "generatePomFileForMavenPublication", 
"grailsPublishValidation", "help", "init", "install", "jar", "javaToolchains", 
"javadoc", "javadocJar",
+                                         "model", "outgoingVariants", 
"processResources", "processTestResources", "projects", "properties", "publish",
+                                         
"publishAllPublicationsToMavenRepository", 
"publishMavenPublicationToMavenLocal", 
"publishMavenPublicationToMavenRepository",
+                                         "publishToMavenLocal", 
"resolvableConfigurations", "sourcesJar", "tasks", "test", "testClasses", 
"testSourcesJar", "updateDaemonJvm", "wrapper"]

Review Comment:
   ```suggestion
           project.tasks.names.toList() == [
                   'artifactTransforms',
                   'assemble',
                   'build',
                   'buildDependents',
                   'buildEnvironment',
                   'buildNeeded',
                   'check',
                   'classes',
                   'clean',
                   'compileJava',
                   'compileTestJava',
                   'components',
                   'dependencies',
                   'dependencyInsight',
                   'dependentComponents',
                   'generateMetadataFileForMavenPublication',
                   'generatePomFileForMavenPublication',
                   'grailsPublishValidation',
                   'help',
                   'init',
                   'install',
                   'jar',
                   'javaToolchains',
                   'javadoc',
                   'javadocJar',
                   'model',
                   'outgoingVariants',
                   'processResources',
                   'processTestResources',
                   'projects',
                   'properties',
                   'publish',
                   'publishAllPublicationsToMavenRepository',
                   'publishMavenPublicationToMavenLocal',
                   'publishMavenPublicationToMavenRepository',
                   'publishToMavenLocal',
                   'resolvableConfigurations',
                   'sourcesJar',
                   'tasks',
                   'test',
                   'testClasses',
                   'testSourcesJar',
                   'updateDaemonJvm',
                   'wrapper',
           ]
   ```



##########
plugin/src/test/groovy/org/apache/grails/gradle/publish/GrailsPublishGradlePluginTest.groovy:
##########
@@ -19,24 +19,77 @@
 
 package org.apache.grails.gradle.publish
 
+import org.gradle.api.GradleException
+import org.gradle.api.internal.project.ProjectInternal
 import org.gradle.testfixtures.ProjectBuilder
 import spock.lang.Specification
 
 class GrailsPublishGradlePluginTest extends Specification {
 
-    def 'plugin registers release task for release version'() {
+    def "requires java or java platform plugin"() {

Review Comment:
   ```suggestion
       def 'requires java or java platform plugin'() {
   ```



##########
plugin/src/test/groovy/org/apache/grails/gradle/publish/GrailsPublishGradlePluginTest.groovy:
##########
@@ -19,24 +19,77 @@
 
 package org.apache.grails.gradle.publish
 
+import org.gradle.api.GradleException
+import org.gradle.api.internal.project.ProjectInternal
 import org.gradle.testfixtures.ProjectBuilder
 import spock.lang.Specification
 
 class GrailsPublishGradlePluginTest extends Specification {
 
-    def 'plugin registers release task for release version'() {
+    def "requires java or java platform plugin"() {
         given:
         def project = ProjectBuilder.builder().build()
         project.version = '1.0.0'
 
         when:
         project.plugins.apply('org.apache.grails.gradle.grails-publish')
+        ((ProjectInternal) project).evaluate()
 
         then:
-        project.tasks.findByName('retrieveSonatypeStagingProfile') != null
+        def ge = thrown(GradleException)
+        ge.cause.message == "Grails Publish Plugin requires the Java Platform 
or Java Plugin to be applied to the project."
     }
 
-    def 'plugin registers release task for snapshot version'() {
+    def 'apply only: plugin registers release task for release version'() {
+        given:
+        def project = ProjectBuilder.builder().build()
+        project.version = '1.0.0'
+
+        when:
+        project.plugins.apply('org.apache.grails.gradle.grails-publish')
+
+        then:
+        project.tasks.names.toList() == ["assemble", "build", "check", 
"clean", "closeAndReleaseSonatypeStagingRepository",
+                                         "closeAndReleaseStagingRepositories", 
"closeSonatypeStagingRepository", "closeStagingRepositories",
+                                         "findSonatypeStagingRepository", 
"initializeSonatypeStagingRepository", "publish", "publishToMavenLocal",
+                                         "releaseSonatypeStagingRepository", 
"releaseStagingRepositories", "retrieveSonatypeStagingProfile"]
+    }
+
+    def "evaluate: plugin registers release task for release version"() {

Review Comment:
   ```suggestion
       def 'evaluate: plugin registers release task for release version'() {
   ```



##########
plugin/src/main/groovy/org/apache/grails/gradle/publish/GrailsPublishGradlePlugin.groovy:
##########
@@ -59,7 +80,7 @@ class GrailsPublishGradlePlugin implements Plugin<Project> {
     public static String SNAPSHOT_PUBLISH_TYPE_PROPERTY = 'snapshotPublishType'
     public static String RELEASE_PUBLISH_TYPE_PROPERTY = 'releasePublishType'
 
-    String getErrorMessage(String missingSetting) {
+    static String getErrorMessage(String missingSetting) {

Review Comment:
   ```suggestion
       static String createErrorMessage(String missingSetting) {
   ```
   Try to reserve the get* method name idiom for getters?



##########
plugin/src/main/groovy/org/apache/grails/gradle/publish/GrailsPublishGradlePlugin.groovy:
##########
@@ -512,13 +546,16 @@ Note: if project properties are used, the properties must 
be defined prior to ap
         }
 
         SourceSetContainer sourceSets = findSourceSets(project)
-        if (!sourceSets.main.hasProperty('groovy')) {
+
+        SourceSet main = sourceSets.named('main').get()
+        GroovySourceDirectorySet groovy = 
main.getExtensions().findByType(GroovySourceDirectorySet)
+        if (!groovy) {
             return null
         }
 
-        String pluginXml = 
"${sourceSets.main.groovy.getClassesDirectory().get().getAsFile()}/META-INF/grails-plugin.xml".toString()
-        new File(pluginXml).exists() ? [
-                source    : pluginXml,
+        File pluginXml = 
groovy.getClassesDirectory().get().file('META-INF/grails-plugin.xml').asFile

Review Comment:
   ```suggestion
           def pluginXml = 
groovy.classesDirectory.get().file('META-INF/grails-plugin.xml').asFile
   ```



##########
plugin/src/main/groovy/org/apache/grails/gradle/publish/GrailsPublishGradlePlugin.groovy:
##########
@@ -529,15 +566,11 @@ Note: if project properties are used, the properties must 
be defined prior to ap
     }
 
     protected validateProjectPublishable(Project project) {
-        boolean hasJavaPlugin = 
project.extensions.findByType(JavaPluginExtension)
-        boolean hasJavaPlatform = 
project.extensions.findByType(JavaPlatformExtension)
+        boolean hasJavaPlugin = 
project.extensions.findByType(JavaPluginExtension) as JavaPlatformExtension
+        boolean hasJavaPlatform = 
project.extensions.findByType(JavaPlatformExtension) as JavaPlatformExtension

Review Comment:
   ```suggestion
           def javaPlugin = project.extensions.findByType(JavaPluginExtension)
           def javaPlatform = 
project.extensions.findByType(JavaPlatformExtension)
   ```
   and the corresponding variable renames below.



##########
plugin/src/test/groovy/org/apache/grails/gradle/publish/GrailsPublishGradlePluginTest.groovy:
##########
@@ -19,24 +19,77 @@
 
 package org.apache.grails.gradle.publish
 
+import org.gradle.api.GradleException
+import org.gradle.api.internal.project.ProjectInternal
 import org.gradle.testfixtures.ProjectBuilder
 import spock.lang.Specification
 
 class GrailsPublishGradlePluginTest extends Specification {
 
-    def 'plugin registers release task for release version'() {
+    def "requires java or java platform plugin"() {
         given:
         def project = ProjectBuilder.builder().build()
         project.version = '1.0.0'
 
         when:
         project.plugins.apply('org.apache.grails.gradle.grails-publish')
+        ((ProjectInternal) project).evaluate()
 
         then:
-        project.tasks.findByName('retrieveSonatypeStagingProfile') != null
+        def ge = thrown(GradleException)
+        ge.cause.message == "Grails Publish Plugin requires the Java Platform 
or Java Plugin to be applied to the project."
     }
 
-    def 'plugin registers release task for snapshot version'() {
+    def 'apply only: plugin registers release task for release version'() {
+        given:
+        def project = ProjectBuilder.builder().build()
+        project.version = '1.0.0'
+
+        when:
+        project.plugins.apply('org.apache.grails.gradle.grails-publish')
+
+        then:
+        project.tasks.names.toList() == ["assemble", "build", "check", 
"clean", "closeAndReleaseSonatypeStagingRepository",
+                                         "closeAndReleaseStagingRepositories", 
"closeSonatypeStagingRepository", "closeStagingRepositories",
+                                         "findSonatypeStagingRepository", 
"initializeSonatypeStagingRepository", "publish", "publishToMavenLocal",
+                                         "releaseSonatypeStagingRepository", 
"releaseStagingRepositories", "retrieveSonatypeStagingProfile"]
+    }
+
+    def "evaluate: plugin registers release task for release version"() {
+        given:
+        def project = ProjectBuilder.builder().build()
+        project.version = '1.0.0'
+
+        and:
+        project.plugins.apply('org.apache.grails.gradle.grails-publish')
+        project.plugins.apply('java')
+
+        and:
+        GrailsPublishExtension gpe = 
project.extensions.getByType(GrailsPublishExtension)
+        gpe.githubSlug.set('apache/grails-gradle-publish')
+        gpe.license {
+            name = 'Apache-2.0'
+        }
+        gpe.title.set('Grails Gradle Publish Plugin')
+        gpe.desc.set('A plugin to assist in publishing Grails artifacts')
+        gpe.developers.set(['jdaugherty': 'James Daugherty'])
+
+        when:
+        ((ProjectInternal) project).evaluate()
+
+        then:
+        project.tasks.names.toList() == ["artifactTransforms", "assemble", 
"build", "buildDependents", "buildEnvironment", "buildNeeded", "check", 
"classes", "clean",
+                                         
"closeAndReleaseSonatypeStagingRepository", 
"closeAndReleaseStagingRepositories", "closeSonatypeStagingRepository", 
"closeStagingRepositories",
+                                         "compileJava", "compileTestJava", 
"components", "dependencies", "dependencyInsight", "dependentComponents", 
"findSonatypeStagingRepository",
+                                         
"generateMetadataFileForMavenPublication", 
"generatePomFileForMavenPublication", "grailsPublishValidation", "help", "init",
+                                         
"initializeSonatypeStagingRepository", "install", "jar", "javaToolchains", 
"javadoc", "javadocJar", "model", "outgoingVariants",
+                                         "processResources", 
"processTestResources", "projects", "properties", "publish", 
"publishAllPublicationsToSonatypeRepository",
+                                         
"publishMavenPublicationToMavenLocal", 
"publishMavenPublicationToSonatypeRepository", "publishToMavenLocal", 
"publishToSonatype",
+                                         "releaseSonatypeStagingRepository", 
"releaseStagingRepositories", "resolvableConfigurations", 
"retrieveSonatypeStagingProfile",
+                                         "signMavenPublication", "sourcesJar", 
"tasks", "test", "testClasses", "testSourcesJar", "updateDaemonJvm", "wrapper"]

Review Comment:
   ```suggestion
           project.tasks.names.toList() == [
                   'artifactTransforms',
                   'assemble',
                   'build',
                   'buildDependents',
                   'buildEnvironment',
                   'buildNeeded',
                   'check',
                   'classes',
                   'clean',
                   'closeAndReleaseSonatypeStagingRepository',
                   'closeAndReleaseStagingRepositories',
                   'closeSonatypeStagingRepository',
                   'closeStagingRepositories',
                   'compileJava',
                   'compileTestJava',
                   'components',
                   'dependencies',
                   'dependencyInsight',
                   'dependentComponents',
                   'findSonatypeStagingRepository',
                   'generateMetadataFileForMavenPublication',
                   'generatePomFileForMavenPublication',
                   'grailsPublishValidation',
                   'help',
                   'init',
                   'initializeSonatypeStagingRepository',
                   'install',
                   'jar',
                   'javaToolchains',
                   'javadoc',
                   'javadocJar',
                   'model',
                   'outgoingVariants',
                   'processResources',
                   'processTestResources',
                   'projects',
                   'properties',
                   'publish',
                   'publishAllPublicationsToSonatypeRepository',
                   'publishMavenPublicationToMavenLocal',
                   'publishMavenPublicationToSonatypeRepository',
                   'publishToMavenLocal',
                   'publishToSonatype',
                   'releaseSonatypeStagingRepository',
                   'releaseStagingRepositories',
                   'resolvableConfigurations',
                   'retrieveSonatypeStagingProfile',
                   'signMavenPublication',
                   'sourcesJar',
                   'tasks',
                   'test',
                   'testClasses',
                   'testSourcesJar',
                   'updateDaemonJvm',
                   'wrapper',
           ]
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to