quartz-scheduler / quartz

Code for Quartz Scheduler
http://www.quartz-scheduler.org
Apache License 2.0
6.25k stars 1.92k forks source link

Is Quartz abandoned? (No, but lightly maintained, looking for contributors) #878

Closed alanwaxman closed 1 year ago

alanwaxman commented 1 year ago

No new version since 2019. No reasonably recent activity.

laviua commented 1 year ago

It's time to rewrite it in kotlin :-D

Avici-Mix commented 1 year ago

Hope to update, almost four years, we can't use it because it's overdue.

sergey-morenets commented 1 year ago

@alanwaxman

Yes, you're right. Last commit was made a year ago. And last version was released almost 4 years ago. Unfortunately there is no direct replacement of this library in the Java world. There was cron4j but it was abandoned in 2012.

bkkite commented 1 year ago

@sergey-morenets what about JobRunR? In my eyes is pretty similar.

Avici-Mix commented 1 year ago

@bkkite JobRunR has High-Risk License

bkkite commented 1 year ago

@Avici-Mix Do you mean that at some point they change the license and make it totally private? Yes that's true, but in my opinion it's the same risk as using a project that nobody updates. What is better? I prefer a project that is alive and that I can have some kind of support for. let's see how it goes! ;)

Avici-Mix commented 1 year ago

@bkkite oh yes, you are right. For my personal project,I prefer other alive project like JobRunR. But for my work, I can't use JobRunR and other contains High-Risk license project which has bean scanned by my company's tools : (. Any way , thank you for your advice, it's helpful to me : )

sergey-morenets commented 1 year ago

@sergey-morenets what about JobRunR? In my eyes is pretty similar.

I've never used. Let me take a look at its documentation and features.

jhchee commented 1 year ago

@bkkite I would consider JobRunr as paid alternative. The free version is not 1:1 replacement for Quartz.

alfespa17 commented 1 year ago

This looks like an alternative https://github.com/kagkarlsson/db-scheduler

jhouserizer commented 1 year ago

We expect to make a release with updates for jakarta namespace changes in the coming weeks. Contributions to make that change are welcome and would speed up the effort.

simpleyoung129 commented 1 year ago

Give the author a thumbs up and I'm looking forward to the release of the new version. 👍👍👍

alfespa17 commented 1 year ago

Hello @jhouserizer not sure if this could help but there is one maven plugin that could help with the migration

https://docs.openrewrite.org/reference/recipes/java/migrate/jakarta/javaxmigrationtojakarta

I tested adding the plugin to the main pom and running the command:

mvn -U org.openrewrite.maven:rewrite-maven-plugin:run \
  -Drewrite.recipeArtifactCoordinates=org.openrewrite.recipe:rewrite-migrate-java:LATEST \
  -Drewrite.activeRecipes=org.openrewrite.java.migrate.jakarta.JavaxMigrationToJakarta

The plugin created the following changes

[WARNING]             org.openrewrite.maven.AddDependency: {groupId=jakarta.jms, artifactId=jakarta.jms-api, version=latest.release, onlyIfUsing=javax.jms.*}
[WARNING]         org.openrewrite.java.migrate.jakarta.JavaxMailToJakartaMail
[WARNING]             org.openrewrite.maven.AddDependency: {groupId=jakarta.mail, artifactId=jakarta.mail-api, version=latest.release, onlyIfUsing=javax.mail.*}
[WARNING] Changes have been made to quartz-jobs/src/main/java/org/quartz/jobs/ee/ejb/EJBInvokerJob.java by:
[WARNING]     org.openrewrite.java.migrate.jakarta.JavaxMigrationToJakarta
[WARNING]         org.openrewrite.java.migrate.jakarta.JavaxEjbToJakartaEjb
[WARNING]             org.openrewrite.java.ChangePackage: {oldPackageName=javax.ejb, newPackageName=jakarta.ejb, recursive=true}
[WARNING] Changes have been made to quartz-jobs/src/main/java/org/quartz/jobs/ee/jms/JmsMessageFactory.java by:
[WARNING]     org.openrewrite.java.migrate.jakarta.JavaxMigrationToJakarta
[WARNING]         org.openrewrite.java.migrate.jakarta.JavaxJmsToJakartaJms
[WARNING]             org.openrewrite.java.ChangePackage: {oldPackageName=javax.jms, newPackageName=jakarta.jms, recursive=true}
[WARNING] Changes have been made to quartz-jobs/src/main/java/org/quartz/jobs/ee/jms/SendDestinationMessageJob.java by:
[WARNING]     org.openrewrite.java.migrate.jakarta.JavaxMigrationToJakarta
[WARNING]         org.openrewrite.java.migrate.jakarta.JavaxJmsToJakartaJms
[WARNING]             org.openrewrite.java.ChangePackage: {oldPackageName=javax.jms, newPackageName=jakarta.jms, recursive=true}
[WARNING] Changes have been made to quartz-jobs/src/main/java/org/quartz/jobs/ee/jms/SendQueueMessageJob.java by:
[WARNING]     org.openrewrite.java.migrate.jakarta.JavaxMigrationToJakarta
[WARNING]         org.openrewrite.java.migrate.jakarta.JavaxJmsToJakartaJms
[WARNING]             org.openrewrite.java.ChangePackage: {oldPackageName=javax.jms, newPackageName=jakarta.jms, recursive=true}
[WARNING] Changes have been made to quartz-jobs/src/main/java/org/quartz/jobs/ee/jms/SendTopicMessageJob.java by:
[WARNING]     org.openrewrite.java.migrate.jakarta.JavaxMigrationToJakarta
[WARNING]         org.openrewrite.java.migrate.jakarta.JavaxJmsToJakartaJms
[WARNING]             org.openrewrite.java.ChangePackage: {oldPackageName=javax.jms, newPackageName=jakarta.jms, recursive=true}
[WARNING] Changes have been made to quartz-jobs/src/main/java/org/quartz/jobs/ee/mail/SendMailJob.java by:
[WARNING]     org.openrewrite.java.migrate.jakarta.JavaxMigrationToJakarta
[WARNING]         org.openrewrite.java.migrate.jakarta.JavaxMailToJakartaMail
[WARNING]             org.openrewrite.java.ChangePackage: {oldPackageName=javax.mail, newPackageName=jakarta.mail, recursive=true}
[WARNING]                 org.openrewrite.Recipe$AdHocRecipe
[WARNING]             org.openrewrite.maven.AddDependency: {groupId=jakarta.mail, artifactId=jakarta.mail-api, version=latest.release, onlyIfUsing=javax.mail.*}
[WARNING]                 org.openrewrite.Recipe$AdHocRecipe
[WARNING] Changes have been made to quartz-jobs/src/test/java/org/quartz/jobs/SendMailJobTest.java by:
[WARNING]     org.openrewrite.java.migrate.jakarta.JavaxMigrationToJakarta
[WARNING]         org.openrewrite.java.migrate.jakarta.JavaxMailToJakartaMail
[WARNING]             org.openrewrite.java.ChangePackage: {oldPackageName=javax.mail, newPackageName=jakarta.mail, recursive=true}
[WARNING]                 org.openrewrite.Recipe$AdHocRecipe
[WARNING] Changes have been made to quartz-plugins/pom.xml by:
[WARNING]     org.openrewrite.java.migrate.jakarta.JavaxMigrationToJakarta
[WARNING]         org.openrewrite.java.migrate.jakarta.JavaxTransactionMigrationToJakartaTransaction
[WARNING]             org.openrewrite.maven.AddDependency: {groupId=jakarta.transaction, artifactId=jakarta.transaction-api, version=latest.release, onlyIfUsing=javax.transaction.*}
[WARNING] Changes have been made to quartz-plugins/src/main/java/org/quartz/plugins/SchedulerPluginWithUserTransactionSupport.java by:
[WARNING]     org.openrewrite.java.migrate.jakarta.JavaxMigrationToJakarta
[WARNING]         org.openrewrite.java.migrate.jakarta.JavaxTransactionMigrationToJakartaTransaction
[WARNING]             org.openrewrite.java.ChangePackage: {oldPackageName=javax.transaction, newPackageName=jakarta.transaction, recursive=true}
[WARNING] Changes have been made to quartz-plugins/src/main/java/org/quartz/plugins/xml/XMLSchedulingDataProcessorPlugin.java by:
[WARNING]     org.openrewrite.java.migrate.jakarta.JavaxMigrationToJakarta
[WARNING]         org.openrewrite.java.migrate.jakarta.JavaxTransactionMigrationToJakartaTransaction
[WARNING]             org.openrewrite.java.ChangePackage: {oldPackageName=javax.transaction, newPackageName=jakarta.transaction, recursive=true}
[WARNING] Please review and commit the results.
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   pom.xml
        modified:   quartz-core/pom.xml
        modified:   quartz-core/src/main/java/org/quartz/ExecuteInJTATransaction.java
        modified:   quartz-core/src/main/java/org/quartz/ee/jta/JTAJobRunShell.java
        modified:   quartz-core/src/main/java/org/quartz/ee/jta/UserTransactionHelper.java
        modified:   quartz-core/src/main/java/org/quartz/ee/servlet/QuartzInitializerListener.java
        modified:   quartz-core/src/main/java/org/quartz/ee/servlet/QuartzInitializerServlet.java
        modified:   quartz-core/src/main/java/org/quartz/impl/jdbcjobstore/JTANonClusteredSemaphore.java
        modified:   quartz-core/src/main/java/org/quartz/xml/XMLSchedulingDataProcessor.java
        modified:   quartz-jobs/pom.xml
        modified:   quartz-jobs/src/main/java/org/quartz/jobs/ee/ejb/EJBInvokerJob.java
        modified:   quartz-jobs/src/main/java/org/quartz/jobs/ee/jms/JmsMessageFactory.java
        modified:   quartz-jobs/src/main/java/org/quartz/jobs/ee/jms/SendDestinationMessageJob.java
        modified:   quartz-jobs/src/main/java/org/quartz/jobs/ee/jms/SendQueueMessageJob.java
        modified:   quartz-jobs/src/main/java/org/quartz/jobs/ee/jms/SendTopicMessageJob.java
        modified:   quartz-jobs/src/main/java/org/quartz/jobs/ee/mail/SendMailJob.java
        modified:   quartz-jobs/src/test/java/org/quartz/jobs/SendMailJobTest.java
        modified:   quartz-plugins/pom.xml
        modified:   quartz-plugins/src/main/java/org/quartz/plugins/SchedulerPluginWithUserTransactionSupport.java
        modified:   quartz-plugins/src/main/java/org/quartz/plugins/xml/XMLSchedulingDataProcessorPlugin.java
jhouserizer commented 1 year ago

@alfespa17 - thanks. the plugin does a fair bit of the work (though not complete).

jhouserizer commented 1 year ago

Next version will likely be "2.5.0" and the "major" plans for it are updating to use Jakarta namespace and updating 3rd party library usage in general. Hope to be completed in april.

a good start: https://github.com/quartz-scheduler/quartz/pull/893

Philipp-Borchert-ISH commented 1 year ago

Just leaving this here in case anyone is in dire need of a workaround for JakartaEE: You can create a "migrated" version of the 2.3.2 library via transformer-maven-plugin and integrate it in your build process. Works like a charm, at least for us.

https://gist.github.com/Philipp-Borchert-ISH/20486bd49be9cb01c39953c42fa9109f

jhouserizer commented 1 year ago

Quartz 2.4.0 RC1 is released to maven central and on GitHub.

It would be nice if a few users test out the new pom which declares several dependencies differently than in past releases (using "provided" scope).

Before making the full/official release it would be good to know this is working as expected for users.

You can add the dependency with this version number:

org.quartz-scheduler quartz 2.4.0-rc1

.... Once we're confident about all the changes in 2.4.0, we'll re-package (for jakarta) and release 2.5.0 .

up2-date commented 1 year ago

@jhouserizer

Hello,

A few questions about the upcoming releases:

Is Quartz 2.5.0 no longer Java 8 compatible? We are still using Java 8 in our project.

Can we update to Quartz 2.4.0, this is currently still Java 8 compatible. Will there still be bug fixes in this version?

Thanks for your help

jhouserizer commented 1 year ago

@up2-date ,

2.5.0 has the shift to Jakarta namespace .. This means it really needs to be Java 11+ only.

2.4.0 at the moment has the very same code as 2.5.0, excepting the namespace/dependency change. Future bug fixes / maintenance will go here for some time.

stale[bot] commented 1 year ago

Is this still relevant? If so, what is blocking it? Is there anything you can do to help move it forward? This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs.

alfespa17 commented 1 year ago

is there any plan to go GA with 2.4.0 and 2.5.0?

bcode2 commented 11 months ago

Hello I can confirm 2.4.0-rc2 is working pretty well. Used at Enterprise with springframework 5.2.25

bmertens911 commented 9 months ago

Hi @Avici-Mix & @bkkite - I'm a bit late to the party but why do you consider it a high-risk license? It has the same license as Hibernate so I don't understand the risk?

rgambelli commented 4 months ago

Can you confirm that quartz 2.3.2 (so the managed version by latest springboot) requires in classpath javax.transaction-api ? Without that dependency I obtain this:

Caused by: java.lang.NoClassDefFoundError: javax/transaction/UserTransaction
    at java.base/java.lang.Class.getDeclaredMethods0(Native Method)
    at java.base/java.lang.Class.privateGetDeclaredMethods(Class.java:3402)
    at java.base/java.lang.Class.privateGetPublicMethods(Class.java:3427)
    at java.base/java.lang.Class.getMethods(Class.java:2019)
    at java.desktop/com.sun.beans.introspect.MethodInfo.get(MethodInfo.java:70)
    at java.desktop/com.sun.beans.introspect.ClassInfo.getMethods(ClassInfo.java:80)
    at java.desktop/java.beans.Introspector.getTargetMethodInfo(Introspector.java:1029)
    at java.desktop/java.beans.Introspector.getBeanInfo(Introspector.java:446)
    at java.desktop/java.beans.Introspector.getBeanInfo(Introspector.java:195)
    at org.quartz.impl.StdSchedulerFactory.setBeanProps(StdSchedulerFactory.java:1453)
    at org.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:1093)
    at org.quartz.impl.StdSchedulerFactory.getScheduler(StdSchedulerFactory.java:1579)

In my classpath there is jakarta.transaction-api too, thanks