diff --git a/docs/src/main/asciidoc/README.adoc b/docs/src/main/asciidoc/README.adoc
index 6e2a3379..5a980bef 100644
--- a/docs/src/main/asciidoc/README.adoc
+++ b/docs/src/main/asciidoc/README.adoc
@@ -1,4 +1,4 @@
-= Spring Cloud Task image:https://build.spring.io/plugins/servlet/wittified/build-status/SCT-STASK[Build Status, link=https://build.spring.io/browse/SCT-STASK]
+= Spring Cloud Task
Is a project centered around the idea of processing on demand. A user is able to develop
a “task” that can be deployed, executed and removed on demand, yet the result of the
diff --git a/spring-cloud-starter-single-step-batch-job/pom.xml b/spring-cloud-starter-single-step-batch-job/pom.xml
index 553b65a1..22c9473e 100644
--- a/spring-cloud-starter-single-step-batch-job/pom.xml
+++ b/spring-cloud-starter-single-step-batch-job/pom.xml
@@ -10,8 +10,8 @@
spring-cloud-starter-single-step-batch-job
- 1.16.0
- 1.16.0
+ 1.16.1
+ 1.16.1
1.0.8
diff --git a/spring-cloud-starter-single-step-batch-job/src/test/resources/logback-test.xml b/spring-cloud-starter-single-step-batch-job/src/test/resources/logback-test.xml
new file mode 100644
index 00000000..9374ec7a
--- /dev/null
+++ b/spring-cloud-starter-single-step-batch-job/src/test/resources/logback-test.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/spring-cloud-task-integration-tests/pom.xml b/spring-cloud-task-integration-tests/pom.xml
index e4a776a0..a3cb8ca4 100644
--- a/spring-cloud-task-integration-tests/pom.xml
+++ b/spring-cloud-task-integration-tests/pom.xml
@@ -13,8 +13,8 @@
spring-cloud-task-integration-tests
- 1.16.0
- 1.16.0
+ 1.16.1
+ 1.16.1
1.0.8
diff --git a/spring-cloud-task-samples/batch-events/pom.xml b/spring-cloud-task-samples/batch-events/pom.xml
index eba5077f..971b2e51 100644
--- a/spring-cloud-task-samples/batch-events/pom.xml
+++ b/spring-cloud-task-samples/batch-events/pom.xml
@@ -20,8 +20,8 @@
UTF-8
1.8
- 1.16.0
- 1.16.0
+ 1.16.1
+ 1.16.1
1.0.8
3.2.0-SNAPSHOT
diff --git a/spring-cloud-task-samples/batch-events/src/main/resources/logback-test.xml b/spring-cloud-task-samples/batch-events/src/main/resources/logback-test.xml
new file mode 100644
index 00000000..9374ec7a
--- /dev/null
+++ b/spring-cloud-task-samples/batch-events/src/main/resources/logback-test.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/spring-cloud-task-samples/single-step-batch-job/pom.xml b/spring-cloud-task-samples/single-step-batch-job/pom.xml
index 9d050621..dd4c85a3 100644
--- a/spring-cloud-task-samples/single-step-batch-job/pom.xml
+++ b/spring-cloud-task-samples/single-step-batch-job/pom.xml
@@ -41,7 +41,8 @@
org.springframework.cloud
- spring-cloud-task-core
+ spring-cloud-starter-task
+ ${project.version}
org.springframework.boot
diff --git a/spring-cloud-task-stream/src/main/java/org/springframework/cloud/task/batch/listener/BatchEventAutoConfiguration.java b/spring-cloud-task-stream/src/main/java/org/springframework/cloud/task/batch/listener/BatchEventAutoConfiguration.java
index ed2430a3..5981bc62 100644
--- a/spring-cloud-task-stream/src/main/java/org/springframework/cloud/task/batch/listener/BatchEventAutoConfiguration.java
+++ b/spring-cloud-task-stream/src/main/java/org/springframework/cloud/task/batch/listener/BatchEventAutoConfiguration.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2016-2019 the original author or authors.
+ * Copyright 2016-2021 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -28,6 +28,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
@@ -182,6 +183,7 @@ public class BatchEventAutoConfiguration {
@EnableBinding(BatchEventsChannels.class)
@EnableConfigurationProperties(TaskEventProperties.class)
@ConditionalOnMissingBean(name = JOB_EXECUTION_EVENTS_LISTENER)
+ @ConditionalOnExpression("T(org.springframework.util.StringUtils).isEmpty('${spring.batch.job.jobName:}')")
public static class JobExecutionListenerConfiguration {
@Autowired
diff --git a/spring-cloud-task-stream/src/main/java/org/springframework/cloud/task/listener/TaskEventAutoConfiguration.java b/spring-cloud-task-stream/src/main/java/org/springframework/cloud/task/listener/TaskEventAutoConfiguration.java
index f1f011f7..f6d7526c 100644
--- a/spring-cloud-task-stream/src/main/java/org/springframework/cloud/task/listener/TaskEventAutoConfiguration.java
+++ b/spring-cloud-task-stream/src/main/java/org/springframework/cloud/task/listener/TaskEventAutoConfiguration.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2016-2019 the original author or authors.
+ * Copyright 2016-2021 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -20,6 +20,7 @@ import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.cloud.stream.annotation.EnableBinding;
import org.springframework.cloud.stream.annotation.Output;
@@ -33,10 +34,12 @@ import org.springframework.messaging.MessageChannel;
/**
* @author Michael Minella
+ * @author Glenn Renfro
*/
@Configuration(proxyBeanMethods = false)
@ConditionalOnClass(EnableBinding.class)
@ConditionalOnBean(TaskLifecycleListener.class)
+@ConditionalOnExpression("T(org.springframework.util.StringUtils).isEmpty('${spring.batch.job.jobName:}')")
// @checkstyle:off
@ConditionalOnProperty(prefix = "spring.cloud.task.events", name = "enabled",
havingValue = "true", matchIfMissing = true)
diff --git a/spring-cloud-task-stream/src/test/java/org/springframework/cloud/task/batch/listener/JobExecutionEventTests.java b/spring-cloud-task-stream/src/test/java/org/springframework/cloud/task/batch/listener/JobExecutionEventTests.java
index 143446d7..48933910 100644
--- a/spring-cloud-task-stream/src/test/java/org/springframework/cloud/task/batch/listener/JobExecutionEventTests.java
+++ b/spring-cloud-task-stream/src/test/java/org/springframework/cloud/task/batch/listener/JobExecutionEventTests.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2016-2019 the original author or authors.
+ * Copyright 2016-2021 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -23,6 +23,7 @@ import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -339,6 +340,27 @@ public class JobExecutionEventTests {
});
}
+ @Test
+ public void singleStepBatchJobSkip() {
+ ApplicationContextRunner applicationContextRunner = new ApplicationContextRunner()
+ .withConfiguration(AutoConfigurations.of(
+ EventJobExecutionConfiguration.class,
+ PropertyPlaceholderAutoConfiguration.class,
+ TestSupportBinderAutoConfiguration.class,
+ SimpleTaskAutoConfiguration.class, SingleTaskConfiguration.class))
+ .withUserConfiguration(
+ BatchEventAutoConfiguration.JobExecutionListenerConfiguration.class)
+ .withPropertyValues("--spring.cloud.task.closecontext_enabled=false",
+ "--spring.main.web-environment=false", "spring.batch.job.jobName=FOO");
+ applicationContextRunner.run((context) -> {
+ NoSuchBeanDefinitionException exception = Assertions.assertThrows(NoSuchBeanDefinitionException.class, () -> {
+ context.getBean("jobExecutionEventsListener");
+ });
+ assertThat(exception.getMessage()).contains(
+ String.format("No bean named 'jobExecutionEventsListener' available"));
+ });
+ }
+
private void testDisabledConfiguration(String property, String disabledListener) {
String disabledPropertyArg = (property != null) ? "--" + property + "=false" : "";
ApplicationContextRunner applicationContextRunner = new ApplicationContextRunner()