Gradle 7.2 Tar task baseName deprecated but replacement archiveBaseName is rejected - gradle

I have started using Gradle 7.2 to build a project that produces a compressed Tar archive. Gradle is issuing a deprecation warning that baseName is deprecated and should be replaced with archiveBaseName. But it rejects archiveBaseName.
A very much simplified example using a trivial Gradle build script, with their associated execution outputs are given below. I did run 'gradle --stop' to ensure a prior version's daemon wasn't actually executing; a GRADLE_HOME environment variable is pointing to the correct Gradle folder (not sure it's needed, but it is set.)
I tried using "archiveBaseName" both without and with "=" ("archiveBaseName 'Test'" and "archiveBaseName='Test'").
The docs seem to suggest archiveBaseName should already be available, so I don't think it's just a heads up of things to come.
Thank you!
Gradle file:
task dist(type: Tar) {
baseName 'Test'
into ('.') { from('.') }
}
Execution:
gradle build --warning-mode=all
c:\jdev\newpaas\xxx>gradle build --warning-mode all
> Configure project :
The AbstractArchiveTask.baseName property has been deprecated. This is scheduled to be removed in Gradle 8.0. Please use the archiveBaseName property instead. See https://docs.gradle.org/7.2/dsl/org.gradle.api.tasks.bundling.AbstractArchiveTask.html#org.gradle.api.tasks.bundling.AbstractArchiveTask:baseName for more details.
at build_2qa2gx0itzunotwyc4ndf9v86$_run_closure1.doCall(C:\jdev\newpaas\xxx\build.gradle:2)
(Run with --stacktrace to get the full stack trace of this deprecation warning.)
> Task :buildEnvironment
------------------------------------------------------------
Root project 'TestProject'
------------------------------------------------------------
classpath
No dependencies
A web-based, searchable dependency report is available by adding the --scan option.
BUILD SUCCESSFUL in 983ms
1 actionable task: 1 executed
Gradle file:
task dist(type: Tar) {
archiveBaseName 'Test'
into ('.') { from('.') }
}
Execution:
c:\jdev\newpaas\xxx>gradle build --warning-mode all
FAILURE: Build failed with an exception.
* Where:
Build file 'C:\jdev\newpaas\xxx\build.gradle' line: 2
* What went wrong:
A problem occurred evaluating root project 'TestProject'.
> Could not find method archiveBaseName() for arguments [Test] on task ':dist' of type org.gradle.api.tasks.bundling.Tar.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 1s
Gradle file:
task dist(type: Tar) {
archiveBaseName='Test'
into ('.') { from('.') }
}
Execution:
c:\jdev\newpaas\xxx>gradle dist
> Task :dist FAILED
FAILURE: Build failed with an exception.
* What went wrong:
A problem was found with the configuration of task ':dist' (type 'Tar').
- Type 'org.gradle.api.tasks.bundling.Tar' property 'archiveFile' doesn't have a configured value.
Reason: This property isn't marked as optional and no value has been configured.
Possible solutions:
1. Assign a value to 'archiveFile'.
2. Mark property 'archiveFile' as optional.
Please refer to https://docs.gradle.org/7.2/userguide/validation_problems.html#value_not_set for more details about this problem.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 1s
1 actionable task: 1 executed

I stumbled across this syntax and it seems to be working for me:
archiveFileName = "${archiveBaseName}-${archiveVersion}.${archiveExtension}"

Related

how do I add JavaFX to a gradle build file using Kotlin DSL?

how do I add the javafx dependencies through gradle?
thufir#dur:~/NetBeansProjects/helloWorldJavaFX$
thufir#dur:~/NetBeansProjects/helloWorldJavaFX$ gradle clean
> Configure project :
e: /home/thufir/NetBeansProjects/helloWorldJavaFX/build.gradle.kts:13:7: Unresolved reference: openjfx
FAILURE: Build failed with an exception.
* Where:
Build file '/home/thufir/NetBeansProjects/helloWorldJavaFX/build.gradle.kts' line: 13
* What went wrong:
Script compilation error:
Line 13: org.openjfx.javafxplugin
^ Unresolved reference: openjfx
1 error
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 1s
thufir#dur:~/NetBeansProjects/helloWorldJavaFX$
the manual says:
plugins {
id 'application'
id 'org.openjfx.javafxplugin' version '0.0.7'
}
my build file has:
plugins {
// Apply the java plugin to add support for Java
java
org.openjfx.javafxplugin
// Apply the application plugin to add support for building an application
application
}
which is generating the above error.
in the plugins-section you have to put
id("org.openjfx.javafxplugin") version "0.0.8"
instead of just org.openjfx.javafxplugin.
After that you can put a javafx-section like
javafx {
modules("javafx.controls", "javafx.fxml")
}
somewhere (I prefere to put it next to the dependency-section). Here you can put in any module you need.
For further configuration posibilities have a look JavaFX Gradle Plugin.

Kotlin via a Gradle build script isn't executing a WebDriver spek

Repo with a tight reproduction of my problem: https://github.com/paul-hammant/kotlin-webdriver-snafu
The spec, that could not be simpler:
class WebDriverSpeks : Spek({
ChromeDriverManager.getInstance().setup()
val co = ChromeOptions()
val chromeDriver = ChromeDriver(co) as WebDriver
beforeGroup {
chromeDriver.get("https://yahoo.com/")
}
describe("yahoo") {
it("should have index.html") {
assertEquals(chromeDriver.title, "hello")
}
}
afterGroup {
chromeDriver.close()
}
})
There's no red lines denoting compile failures in Intellij, yet when the gradle build runs it complains about a transitive dep:
$ gradle build
Download https://jcenter.bintray.com/org/slf4j/slf4j-api/1.7.24/slf4j- api-1.7.24.jar
w: Runtime JAR files in the classpath should have the same version. These files were found in the classpath:
/Users/paul/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk8/1.2.30/f916048adc012c9342b796a5f84c0ac6205abcac/kotlin-stdlib-jdk8-1.2.30.jar (version 1.2)
/Users/paul/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-jdk7/1.2.30/ca12c47fc1e3a7316067b2a51e2f214745ebf8c5/kotlin-stdlib-jdk7-1.2.30.jar (version 1.2)
/Users/paul/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-reflect/1.0.6/3d499d3b7768f88c4796e5a1e357933e11a8936d/kotlin-reflect-1.0.6.jar (version 1.0)
/Users/paul/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.2.30/2dfac33f8b4e92c9dd1422cd286834701a6f6d6/kotlin-stdlib-1.2.30.jar (version 1.2)
w: Consider providing an explicit dependency on kotlin-reflect 1.2 to prevent strange errors
w: Some runtime JAR files in the classpath have an incompatible version. Consider removing them from the classpath or use '-Xskip-runtime-version-check' to suppress this warning
e: Supertypes of the following classes cannot be resolved. Please make sure you have the required dependencies in the classpath:
class org.openqa.selenium.chrome.ChromeDriver, unresolved supertypes: org.openqa.selenium.remote.RemoteWebDriver
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':compileTestKotlin'.
> Compilation error. See log for more details
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 6s
5 actionable tasks: 5 executed
The allegedly unresolved supertype org.openqa.selenium.remote.RemoteWebDriver is in a selenium-remote-driver, and
If I delete ~/.gradle or ./build and try again it is the same.
If I inspect the pom.xml for selenium-java, I can see a dependency on selenium-remote-driver (which exists). See here - http://central.maven.org/maven2/org/seleniumhq/selenium/selenium-java/3.11.0/selenium-java-3.11.0.pom. The one in jcenter is the same.
I don't know why Gradle isn't finding selenium-remote-driver. I have an extra testCompile commented out in the Gradle script but nothing gets fixed if it is commented in.
I think this is a problem in Gradle, or some Gradleized treatment of Maven Central that I don't know much about but is online somewhere. I don't think it is a Kotlin problem. I've used Selenium since it started and am super familiar with it (I've made 100 Maven projects that use Selenium) so I don't think that is it. Of course, I could be wrong with where the root cause is.
Well, this did the trick:
rm -rf ~/.m2/repository/org/seleniumhq/
I didn't know Gradle used the local Maven repo cache. It must have been corrupt somehow.
Hopefully this helps someone another day.

Problems using NetBeans 8.2 and Gradle to compile clarifai-java-master

I am trying to compile clarifai-java-master with Gradle and NetBeans 8.2 (JDK 1.8), but it fails. The log is below.
Could anyone help me, please?!
Thanks!
-------------
Executing: gradle clean build
Arguments: [-c, K:\D\Dados\GitHubProjects\clarifai-java-master\settings.gradle]
:core:clean
:tests:clean
:core:generateBuildConfig
warning: [options] bootstrap class path not set in conjunction with -source 1.7
1 warning
:core:compileBuildConfig
warning: [options] bootstrap class path not set in conjunction with -source 1.7
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
:core:compileJava
:core:processResources UP-TO-DATE
:core:classes
:core:jar
K:\D\Dados\GitHubProjects\clarifai-java-master\core\src\main\java\clarifai2\dto\model\ConceptModel.java:20: warning: no #return
public final PatchModelRequest mergeConcepts() {
^
K:\D\Dados\GitHubProjects\clarifai-java-master\core\src\main\java\clarifai2\dto\model\ConceptModel.java:28: warning: no #return
public final PatchModelRequest setConcepts() {
^
K:\D\Dados\GitHubProjects\clarifai-java-master\core\src\main\java\clarifai2\dto\model\ConceptModel.java:36: warning: no #return
public final PatchModelRequest removeConcepts() {
^
:core:javadoc
3 warnings
:core:javadocJar
:core:sourcesJar
:core:signArchives SKIPPED
:core:assemble
:core:compileTestJava UP-TO-DATE
:core:processTestResources UP-TO-DATE
:core:testClasses UP-TO-DATE
:core:test UP-TO-DATE
:core:check UP-TO-DATE
:core:build
:tests:compileJava UP-TO-DATE
:tests:processResources UP-TO-DATE
:tests:classes UP-TO-DATE
:tests:jar
:tests:javadoc UP-TO-DATE
:tests:javadocJar
:tests:sourcesJar
:tests:assemble
FAILURE: Build failed with an exception.
What went wrong:
Could not resolve all dependencies for configuration :tests:testCompileClasspath.
Unexpected state Evicted for parent node for dependency from com.clarifai.clarifai-api2:core:unspecified.dirty(default) to com.squareup.okhttp3:okhttp:3.4.1(default).
Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
:tests:compileTestJava
BUILD FAILED
Total time: 15.576 secs
Build failure (see the Notifications window for stacktrace): gradle clean build
I've just solved the dependencies problems adding this line:
compile "com.clarifai.clarifai-api2:core:2.2.0"
... in the dependencies sections of two files:
- build-gradle(core) and
- build-gradle(test):
... and Reload Project for core and test.

why is gradle not printing the properties file?

I am trying to execute simple print statements from in gradle/groovy but I get error
extProgram = new Properties()
extProgram.load(new FileInputStream("src/main/resources/version.txt"))
ext.appVersion=extProgram['version']
println ext.appVersion
This is the error I get
Creating properties on demand (a.k.a. dynamic properties) has been deprecated and is scheduled to be removed in Gradle 2.0. Please read http://gradle.org/docs/current/dsl/org.gradle.api.plugins.ExtraPropertiesExtension.html for information on the replacement for dynamic properties.
Deprecated dynamic property: "extProgram" on "root project 'appController'", value: "{}".
2.0.193
[buildinfo] Not using buildInfo properties file for this build.
FAILURE: Build failed with an exception.
* Where:
Build file '/Users/Documents/codebase/app-controller/build.gradle' line: 54
* What went wrong:
A problem occurred evaluating root project 'appConroller'.
> Could not find method $() for arguments [build_5vi6ltfrgdviipcvtfu5rthgs1$_run_closure3_closure22_closure23#411109d] on root project 'appController'.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
Total time: 9.972 secs
This is because extProgram is assumed to be a property of the project.
Try this instead:
def extProgram = new Properties()
...
This defines extProgram as a local variable.

-a option in gradle

The following is from the gradle docs
The Task Tree context menu provides the following options:
Execute ignoring dependencies. This does not require dependent
projects to be rebuilt (same as the -a option).
It's not clear what is the -a option? I tried to execute gradle hl -a for the following build script:
task helloapi {
description = "Hello api"
}
task hl (dependsOn: 'helloapi'){
println "Hl"
description = "Hl"
}
helloapi << {
println "Hello api"
}
But I got
Hl
:api:helloapi
Hello api
:api:hl
I thought the only way to exclude tasks depending on the target task is to use -x option. BTW, when I tryied to ran it in gradle --gui I got the following error:
Executing command: "api:hl-a"
Hl
FAILURE: Build failed with an exception.
* What went wrong:
Project 'api' not found in project ':api'.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
Total time: 6.751 secs
Is it a bug?
-a option ignores project dependencies - not task dependencies. Imagine that there's a complicated multimodule project. There was a change only in a single module (a task was changed) and You'd like to check if this task works well, when -a option is specified other module will not be rebuilt, just the changed one.

Resources