Skip to content

Commit a4bda45

Browse files
committed
Use Maven plugin and Paketo buildpack in batch sample
See spring-atticgh-165
1 parent 8223854 commit a4bda45

File tree

10 files changed

+32
-97
lines changed

10 files changed

+32
-97
lines changed
Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,13 @@
11
Very basic spring boot project using Spring Batch.
22

3-
Current status:
4-
The configuration in src/main/resources/META-INF/native-image was generated with an agent run of the application.
5-
The additional configuration in the graal folder was added as required whilst iterating on trying to get it to work.
6-
The compile script is full of initialize-at-build-time entries.
7-
The setting `spring.aop.proxy-target-class: false` is set in the app - is that valid/correct for this setup?
3+
TODO:
84

5+
- Add proper support via hints
6+
- Remove manual config entries
7+
- On Batch side add `proxyBeanMethods=false` to `org.springframework.batch.core.configuration.annotation.ScopeConfiguration` and `org.springframework.batch.core.configuration.annotation.SimpleBatchConfiguration`.
8+
9+
To build and run the native application packaged in a lightweight container:
10+
```
11+
mvn spring-boot:build-image
12+
docker-compose up
13+
```

spring-graalvm-native-samples/batch/compile.sh

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -29,25 +29,7 @@ echo "Compiling $ARTIFACT with $GRAALVM_VERSION"
2929
time native-image \
3030
--verbose \
3131
-H:Name=$ARTIFACT \
32-
--initialize-at-build-time=org.hsqldb.jdbc.JDBCDriver \
33-
--initialize-at-build-time=org.springframework.batch.core.JobParameters \
34-
--initialize-at-build-time=org.springframework.batch.core.JobInstance \
35-
--initialize-at-build-time=org.springframework.beans.factory.InitializingBean \
36-
--initialize-at-build-time=org.springframework.batch.core.launch.JobOperator \
37-
--initialize-at-build-time=org.springframework.batch.core.Job \
38-
--initialize-at-build-time=org.springframework.batch.core.configuration.JobFactory \
39-
--initialize-at-build-time=org.springframework.batch.core.Entity \
40-
--initialize-at-build-time=org.springframework.batch.core.configuration.JobRegistry \
41-
--initialize-at-build-time=org.springframework.batch.core.JobExecution \
42-
--initialize-at-build-time=org.springframework.batch.core.StepExecution \
43-
--initialize-at-build-time=org.springframework.batch.repository.JobRepository \
44-
--initialize-at-build-time=org.springframework.batch.launch.JobLauncher \
45-
--initialize-at-build-time=org.springframework.transaction.TransactionStatus \
46-
--initialize-at-build-time=org.springframework.transaction.TransactionDefinition \
47-
--initialize-at-build-time=org.springframework.transaction.PlatformTransactionManager \
48-
--initialize-at-build-time=org.springframework.batch.core.repository.JobRepository \
49-
--initialize-at-build-time=org.springframework.batch.core.launch.JobLauncher \
50-
-cp $CP:../../graal $MAINCLASS 2>&1 | tee output.txt
32+
-cp $CP $MAINCLASS 2>&1 | tee output.txt
5133

5234
if [[ -f $ARTIFACT ]]
5335
then
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
version: '3.1'
2+
services:
3+
batch:
4+
image: batch:0.0.1-SNAPSHOT

spring-graalvm-native-samples/batch/graal/META-INF/native-image/proxy-config.json

Lines changed: 0 additions & 4 deletions
This file was deleted.

spring-graalvm-native-samples/batch/graal/META-INF/native-image/resource-config.json

Lines changed: 0 additions & 7 deletions
This file was deleted.

spring-graalvm-native-samples/batch/pom.xml

Lines changed: 12 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -48,58 +48,20 @@
4848
<plugin>
4949
<groupId>org.springframework.boot</groupId>
5050
<artifactId>spring-boot-maven-plugin</artifactId>
51-
</plugin>
52-
<plugin>
53-
<artifactId>maven-dependency-plugin</artifactId>
54-
<executions>
55-
<execution>
56-
<phase>generate-sources</phase>
57-
<goals>
58-
<goal>build-classpath</goal>
59-
</goals>
60-
<configuration>
61-
<outputProperty>maven.compile.classpath</outputProperty>
62-
<pathSeparator>:</pathSeparator>
63-
</configuration>
64-
</execution>
65-
</executions>
51+
<configuration>
52+
<image>
53+
<builder>nebhale/native-image-builder:defer-to-application</builder>
54+
<env>
55+
<BP_BOOT_NATIVE_IMAGE>1</BP_BOOT_NATIVE_IMAGE>
56+
<BP_BOOT_NATIVE_IMAGE_BUILD_ARGUMENTS>
57+
-Dspring.native.remove-jmx-support=true
58+
-Dspring.spel.ignore=true
59+
</BP_BOOT_NATIVE_IMAGE_BUILD_ARGUMENTS>
60+
</env>
61+
</image>
62+
</configuration>
6663
</plugin>
6764
</plugins>
68-
<pluginManagement>
69-
<plugins>
70-
<!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
71-
<plugin>
72-
<groupId>org.eclipse.m2e</groupId>
73-
<artifactId>lifecycle-mapping</artifactId>
74-
<version>1.0.0</version>
75-
<configuration>
76-
<lifecycleMappingMetadata>
77-
<pluginExecutions>
78-
<pluginExecution>
79-
<pluginExecutionFilter>
80-
<groupId>
81-
org.apache.maven.plugins
82-
</groupId>
83-
<artifactId>
84-
maven-dependency-plugin
85-
</artifactId>
86-
<versionRange>
87-
[3.1.1,)
88-
</versionRange>
89-
<goals>
90-
<goal>build-classpath</goal>
91-
</goals>
92-
</pluginExecutionFilter>
93-
<action>
94-
<ignore></ignore>
95-
</action>
96-
</pluginExecution>
97-
</pluginExecutions>
98-
</lifecycleMappingMetadata>
99-
</configuration>
100-
</plugin>
101-
</plugins>
102-
</pluginManagement>
10365
</build>
10466
<pluginRepositories>
10567
<pluginRepository>

spring-graalvm-native-samples/batch/src/main/resources/META-INF/native-image/jni-config.json

Lines changed: 0 additions & 6 deletions
This file was deleted.

spring-graalvm-native-samples/batch/src/main/resources/META-INF/native-image/proxy-config.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
[
2+
["org.springframework.batch.core.launch.JobOperator","org.springframework.beans.factory.InitializingBean","org.springframework.aop.SpringProxy","org.springframework.aop.framework.Advised","org.springframework.core.DecoratingProxy"],
23
["java.lang.reflect.ParameterizedType","org.springframework.core.SerializableTypeWrapper$SerializableTypeProxy","java.io.Serializable"],
34
["java.lang.reflect.WildcardType","org.springframework.core.SerializableTypeWrapper$SerializableTypeProxy","java.io.Serializable"],
45
["java.sql.Connection"],

spring-graalvm-native-samples/batch/src/main/resources/META-INF/native-image/resource-config.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
{
22
"resources":[
3+
{"pattern":"\\Q/org/hsqldb/resources/information-schema.sql\\E"},
4+
{"pattern":"\\Qorg/hsqldb/resources/information-schema.sql\\E"},
5+
{"pattern":"\\Qorg/hsqldb/resources/.*\\E"},
36
{"pattern":"\\QMETA-INF/services/java.sql.Driver\\E"},
47
{"pattern":"\\QMETA-INF/services/jdk.vm.ci.hotspot.HotSpotJVMCIBackendFactory\\E"},
58
{"pattern":"\\QMETA-INF/services/jdk.vm.ci.services.JVMCIServiceLocator\\E"},
Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,3 @@
11
logging:
22
level:
3-
root: DEBUG
4-
spring:
5-
aop:
6-
proxy-target-class: false
7-
8-
3+
root: DEBUG

0 commit comments

Comments
 (0)