ReactiveX / RxJavaFX

RxJava bindings for JavaFX
Apache License 2.0
519 stars 67 forks source link

Help with Deployment of 2.11 #73

Open thomasnield opened 6 years ago

thomasnield commented 6 years ago

I'm having some build issues probably related to deployment tasks. I have a strong guess the Nebula plugin is no longer supported by Netflix, which breaks with newer versions of Gradle.

@akarnokd et al, can you help me get my build files set up correctly?

akarnokd commented 6 years ago

Do you mean the auto-release? It was a bit long ago but these are the highlights:

thomasnield commented 6 years ago

@akarnokd yes, auto-release. Thank you, I'll take a look.

akarnokd commented 6 years ago

Suggestion: do release tags with "-RCx" when testing out things.

thomasnield commented 6 years ago

@akarnokd will do.

thomasnield commented 6 years ago

Almost at the finish line I think, but having this issue I can't figure out with the CI build:

* Exception is:
org.gradle.execution.TaskSelectionException: Task 'snapshot' not found in root project 'rxjavafx'.
    at org.gradle.execution.TaskSelector.getSelection(TaskSelector.java:116)
    at org.gradle.execution.TaskSelector.getSelection(TaskSelector.java:81)
    at org.gradle.execution.commandline.CommandLineTaskParser.parseTasks(CommandLineTaskParser.java:42)
akarnokd commented 6 years ago

Maybe the travis script still contains the old snapshot argument somewhere.

thomasnield commented 6 years ago

[sigh] new level, new devil.

> Task :test FAILED
Picked up _JAVA_OPTIONS: -Xmx2048m -Xms512m
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':test'.
> failed to read class file /home/travis/build/ReactiveX/RxJavaFX/build/classes/java/test/io/reactivex/rxjavafx/schedulers/JavaFxSchedulerTest$AsNonApp.class
akarnokd commented 6 years ago

Are you using compile target 11? The matrix build of RxJava started working for 11+ only after Gradle 5M1.

thomasnield commented 6 years ago

I have to target Java 11 as that is where JavaFX has been decoupled and spun off as its own library.

Besides trying Gradle 5, is there another approach I can take?

akarnokd commented 6 years ago

Prior Gradle simply won't work with Java 11 class files. Compile target 10 works for tests but it may complain about 11 API use.

thomasnield commented 6 years ago

Got it built successfully, thanks!

thomasnield commented 6 years ago

So close... I'm near the finish line. The artifact isn't getting pushed out for some reason. I am noticing this in the CI ouput:

> Task :bintrayUpload
Task ':bintrayUpload' is not up-to-date because:
  Task has not declared any outputs despite executing actions.
Gradle Bintray Plugin version: 1.7.3
Skipping task rxjavafx
:bintrayUpload (Thread[main,5,main]) completed. Took 0.035 secs.
akarnokd commented 6 years ago

I haven't encountered this error but I haven't tried deploying with Gradle 5M+ before. May be worth trying 1.8.4 of the plugin.

technoir42 commented 6 years ago

@thomasnield you don't need both maven and maven-publish plugins since they do the same thing. maven-publish is a modern one. See my changes here https://gist.github.com/technoir42/fc3275a3ecd83e6c9bd9deccaf80f265/revisions.

To publish to mavenLocal using the new plugin use ./gradlew publishToMavenLocal.

thomasnield commented 6 years ago

@technoir42 :thinking: okay... so running ./gradlew publishToMavenLocal with these changes are supposed to make the artifacts appear on BinTray?

technoir42 commented 6 years ago

@thomasnield no, ./gradlew publishToMavenLocal will publish to ~/.m2/ aka mavenLocal where you can verify the artifacts and POM metadata (e.g. dependencies). Once you are sure that everything is correct you can publish to Bintray using ./gradlew bintrayUpload, but I believe you also need to pass -PreleaseMode=full due to this.

Also, may I suggest you to start from scratch on a test project so you could understand the process and the configuration better?

thomasnield commented 6 years ago

I got the artifact on BinTray finally, and I think I learned a lot more than I planned in Bintray Travis-based artifact deployments.

The only remaining issue is getting the Maven Central sync to happen. For some reason it is not liking the POM path.

Execution failed for task ':bintrayPublish'.
> Could not sync 'reactivex/RxJava/RxJavaFX/2.11.0-RC22' to Maven Central: HTTP/1.1 400 Bad Request [status:Sync Failed, messages:[Invalid pom path ]]
thomasnield commented 6 years ago

God, it's tasks like this that make me want to quit programming and become a truck driver. I downgraded to Gradle 4.x and excluded the tests as they don't work with Gradle 5. This created some progress but there's always one more thing.

It looks like the Bintray POM is missing a lot of fields and therefore getting rejected by Maven Central. Strangely if I publish to my local repo the POM is complete :rage:

an exception.
* What went wrong:
Execution failed for task ':bintrayPublish'.
> Could not sync 'reactivex/RxJava/RxJavaFX/2.11.0-RC27' to Maven Central: HTTP/1.1 400 Bad Request [messages:[Invalid POM: /io/reactivex/rxjava2/rxjavafx/2.11.0-RC27/rxjavafx-2.11.0-RC27.pom: Project name missing, Project description missing, Project URL missing, License information missing, SCM URL missing, Developer information missing, Invalid version for Dependency {groupId=junit, artifactId=junit-dep, version=4.+, type=jar} - uses invalid dynamic version syntax.
  Replace with a fixed version or standard mathematical notation e.g., [1.5,) for version 1.5 and higher., Missing: no javadoc jar found in folder '/io/reactivex/rxjava2/rxjavafx/2.11.0-RC27', Missing: no sources jar found in folder '/io/reactivex/rxjava2/rxjavafx/2.11.0-RC27', Dropping existing partial staging repository.], status:Validation Failed]
renannprado commented 5 years ago

Any news about this one? I would like to try the release candidates.

thomasnield commented 5 years ago

@renannprado I haven't given up on this yet. Just been busy with getting married and doing O'Reilly projects. We learned some lessons with RxKotlin that will help us get releases here. I just need to find the time and I also want TornadoFX to finish the Java 11 migration.