Skip to content

Commit

Permalink
chore: adding profiles for native compile testings (#1931)
Browse files Browse the repository at this point in the history
Based off mpeddada1#1, adding `spring-native` for parent pom, and `native-sample` for samples pom.
These added profile should not have any affect on existing workflows.

Install and use GraalVM compiler and install native image extension with `gu install native-image`.
To build sample executable: `mvn clean package -Pnative-sample-config -Pnative -DskipTests`
To run sample tests: `mvn -PnativeTest clean test -Pnative-sample-config`
  • Loading branch information
zhumin8 authored Jun 12, 2023
1 parent 80bb2ba commit 9aaefd0
Show file tree
Hide file tree
Showing 2 changed files with 133 additions and 0 deletions.
78 changes: 78 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@
<checkstyle-rules.version>9.3</checkstyle-rules.version>
<asciidoctor-maven-plugin.version>2.0.0</asciidoctor-maven-plugin.version>
<errorprone.version>2.19.1</errorprone.version>
<native-maven-plugin.version>0.9.22</native-maven-plugin.version>

<!-- All checks except for javadoc enforced by default -->
<skip.failsafe.tests>${skipTests}</skip.failsafe.tests>
Expand Down Expand Up @@ -336,10 +337,87 @@
</execution>
</executions>
</plugin>

<plugin>
<groupId>org.graalvm.buildtools</groupId>
<artifactId>native-maven-plugin</artifactId>
<version>${native-maven-plugin.version}</version>
<extensions>true</extensions>
</plugin>
</plugins>
</build>

<profiles>
<profile>
<id>spring-native</id>

<dependencies>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-launcher</artifactId>
<version>1.9.3</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire-plugin.version}</version>
<configuration>
<!-- https://docs.spring.io/spring-boot/docs/current/maven-plugin/reference/htmlsingle/#integration-tests.no-starter-parent -->
<excludes combine.self="override" />
<includes>
<!--including all integration tests for testing purposes. -->
<include>${integration-test.pattern}</include>
</includes>
<classesDirectory>${project.build.outputDirectory}</classesDirectory>
<systemPropertyVariables>
<!--integration tests are not invoked unless the relevant system property is set to true here. -->
</systemPropertyVariables>
</configuration>
</plugin>
<plugin>
<groupId>org.graalvm.buildtools</groupId>
<artifactId>native-maven-plugin</artifactId>
<version>${native-maven-plugin.version}</version>
<configuration>
<buildArgs>
<buildArg>--trace-class-initialization=org.apache.commons.logging.LogFactoryService</buildArg>
<buildArg>--initialize-at-build-time=org.apache.commons.logging.LogFactory</buildArg>
</buildArgs>
<classesDirectory>${project.build.outputDirectory}</classesDirectory>
<metadataRepository>
<enabled>true</enabled>
</metadataRepository>
</configuration>
<executions>
<execution>
<id>native-test</id>
<goals>
<goal>test</goal>
</goals>
<phase>test</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<id>process-test-aot</id>
<goals>
<goal>process-test-aot</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>

<profile>
<id>default</id>
<activation>
Expand Down
55 changes: 55 additions & 0 deletions spring-cloud-gcp-samples/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,55 @@
</modules>

<profiles>
<profile>
<id>native-sample-config</id>
<build>
<plugins>
<plugin>
<groupId>org.graalvm.buildtools</groupId>
<artifactId>native-maven-plugin</artifactId>
<configuration>
<buildArgs>
<buildArg>--trace-class-initialization=org.apache.commons.logging.LogFactoryService</buildArg>
<buildArg>--initialize-at-build-time=org.apache.commons.logging.LogFactory</buildArg>
</buildArgs>
</configuration>
<executions>
<execution>
<id>build-native</id>
<goals>
<goal>compile-no-fork</goal>
</goals>
<phase>package</phase>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>nativeTest</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<!-- https://docs.spring.io/spring-boot/docs/current/maven-plugin/reference/htmlsingle/#integration-tests.no-starter-parent -->
<classesDirectory>${project.build.outputDirectory}</classesDirectory>
<excludes combine.self="override" />
<includes>
<!--including all integration tests for testing purposes.-->
<include>${integration-test.pattern}</include>
</includes>
<systemPropertyVariables>
<it.logging>true</it.logging>
</systemPropertyVariables>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>spring-cloud-gcp-ci-it</id>
<build>
Expand Down Expand Up @@ -116,6 +165,12 @@
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.graalvm.buildtools</groupId>
<artifactId>native-maven-plugin</artifactId>
<version>0.9.20</version>
<extensions>true</extensions>
</plugin>
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>appengine-maven-plugin</artifactId>
Expand Down

0 comments on commit 9aaefd0

Please sign in to comment.