1 # Copyright (c) 2024, 2025, Oracle and/or its affiliates. All rights reserved.
2 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
3 #
4 # This code is free software; you can redistribute it and/or modify it
5 # under the terms of the GNU General Public License version 2 only, as
6 # published by the Free Software Foundation.
7 #
8 # This code is distributed in the hope that it will be useful, but WITHOUT
9 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
11 # version 2 for more details (a copy is included in the LICENSE file that
12 # accompanied this code).
13 #
14 # You should have received a copy of the GNU General Public License version
15 # 2 along with this work; if not, write to the Free Software Foundation,
16 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
17 #
18 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
19 # or visit www.oracle.com if you need additional information or have any
20 # questions.
21
22 #===============================================================================
23 # Leyden-premain + Sprint-boot getting-started demo
24 # - https://spring.io/guides/gs/spring-boot
25 # - https://docs.spring.io/spring-boot/maven-plugin/aot.html
26 # - https://bell-sw.com/blog/how-to-use-cds-with-spring-boot-applications/
27 #
28 # See ../lib/DemoSupport.gmk for the "make" targets that build the demo, run the
29 # demo, and gather benchmarking data.
30 #===============================================================================
31
32 # The following needs to be defined before including ../lib/DemoSupport.gmk
33 DEMO_NAME = spring-boot-getting-started
34 DEMO_SRC = gs-spring-boot/complete/src/main/java/com/example/springboot/Application.java
35 DEMO_JAR = gs-spring-boot/complete/spring-boot-complete-0.0.1-SNAPSHOT/spring-boot-complete-0.0.1-SNAPSHOT.jar
36 DEMO_CMDLINE = -Dserver.port=0 -Dspring.aot.enabled=true -Dspring.output.ansi.enabled=NEVER -Dspring.context.exit=onRefresh -jar ${DEMO_JAR}
37 # This is for uploading into Artifactory, usually to a path like
38 # https://xxxx.com/artifactory/yyyy/io/spring/spring-boot-getting-started/3.3.0/spring-boot-getting-started-3.3.0.zip
39 DEMO_ARTIFACT = spring-boot-getting-started-3.3.0.zip
40
41 include ../lib/DemoSupport.gmk
42
43 # Create the project using instructions from https://spring.io/guides/gs/spring-boot and
44 # patch the ${DEMO_SRC} to show start-up measurement used by ../lib/DemoSupport.gmk
45 # Note: we use GIT version 99085f078b01fed27667c0b8fbbb957758911f4a
46 # Note: pom.xml is patched to add <goal>process-aot</goal>; see https://docs.spring.io/spring-boot/maven-plugin/aot.html
47 ${DEMO_SRC}: Application.java pom.xml
48 rm -rf gs-spring-boot ${DEMO_SRC}
49 git clone https://github.com/spring-guides/gs-spring-boot.git
50 cd gs-spring-boot; git reset --hard 99085f078b01fed27667c0b8fbbb957758911f4a
51 cp -v Application.java ${DEMO_SRC}
52 cp -v pom.xml gs-spring-boot/complete
53
54 # Package the app in CDS friendly way
55 # See https://bell-sw.com/blog/how-to-use-cds-with-spring-boot-applications/
56 ${DEMO_JAR}: ${DEMO_SRC}
57 cd gs-spring-boot/complete && JAVA_HOME=${BLDJDK_HOME} ${MVN} -Dmaven.test.skip=true package
58 cd gs-spring-boot/complete && ${BLDJDK_JAVA} -Djarmode=tools -jar target/spring-boot-complete-0.0.1-SNAPSHOT.jar extract
59
60 ${DEMO_ARTIFACT}: ${DEMO_JAR}
61 ${JAR} cvfM ${DEMO_ARTIFACT} \
62 -C gs-spring-boot/complete/spring-boot-complete-0.0.1-SNAPSHOT .
63
64 clean: clean0
65 rm -rf gs-spring-boot ${DEMO_ARTIFACT} mainline_vs_premain.* compare_premain_builds.*
66
67 clean0:
68 rm -f *.cds *.cds.code *.classlist *.jsa *~ *.log *.log.* hs_err_* tmp.txt *.aot *.aotconf
69
70 # Show the patch we made to gs-spring-boot
71 diff:
72 cd gs-spring-boot; git diff -w
73