All Downloads are FREE. Search and download functionalities are using the official Maven repository.

archetype-resources.pom.xml Maven / Gradle / Ivy

Go to download

Create a multi-module maven project for a native ready Spring REST API with webmvc, JPA, OpenID security and OpenAPI

There is a newer version: 4.5.1
Show newest version
<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>${spring-boot-version}</version>
		<relativePath />
	</parent>

	<groupId>${groupId}</groupId>
	<artifactId>${rootArtifactId}</artifactId>
	<version>${version}</version>
	<packaging>pom</packaging>

	<name>${rootArtifactId}</name>

	<modules>
		<module>dtos</module>
		<module>exceptions</module>
		<module>${api-artifactId}</module>
	</modules>

	<properties>
		<java.version>17</java.version>
		<maven.compiler.target>${java.version}</maven.compiler.target>
		<maven.compiler.source>${java.version}</maven.compiler.source>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

		<com.c4-soft.springaddons.version>${c4-soft-springaddons-version}</com.c4-soft.springaddons.version>
		<hibernate-enhance-maven-plugin.version>${hibernate-enhance-maven-plugin-version}</hibernate-enhance-maven-plugin.version>
		<lombok-mapstruct-binding.version>${lombok-mapstruct-binding-version}</lombok-mapstruct-binding.version>
		<org.mapstruct.version>${mapstruct-version}</org.mapstruct.version>
		<spring-native.version>${spring-native-version}</spring-native.version>
		<springdoc-openapi.version>${springdoc-openapi-version}</springdoc-openapi.version>
		<springdoc-openapi-maven-plugin.version>${springdoc-openapi-maven-plugin-version}</springdoc-openapi-maven-plugin.version>
		<springdoc-openapi.output-dir>${project.parent.basedir}/..</springdoc-openapi.output-dir>

		<integration-tests.hostname>${env.HOSTNAME}</integration-tests.hostname>
		<integration-tests.scheme>https</integration-tests.scheme>

		<repackage.classifier />
		<image.builder>paketobuildpacks/builder:tiny</image.builder>
		<ca-certificates.binding>${project.basedir}/bindings/ca-certificates</ca-certificates.binding>
		<image.native>false</image.native>
		<image.arguments />
	</properties>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>${groupId}.${rootArtifactId}</groupId>
				<artifactId>dtos</artifactId>
				<version>${version}</version>
			</dependency>
			<dependency>
				<groupId>${groupId}.${rootArtifactId}</groupId>
				<artifactId>exceptions</artifactId>
				<version>${version}</version>
			</dependency>
			<dependency>
				<groupId>${groupId}.${rootArtifactId}</groupId>
				<artifactId>security</artifactId>
				<version>${version}</version>
			</dependency>

			<dependency>
				<groupId>org.springframework.experimental</groupId>
				<artifactId>spring-native</artifactId>
				<version>${spring-native.version}</version>
			</dependency>


			<dependency>
				<groupId>io.swagger.core.v3</groupId>
				<artifactId>swagger-annotations</artifactId>
				<version>2.1.12</version>
				<scope>provided</scope>
			</dependency>
			<dependency>
				<groupId>org.springdoc</groupId>
				<artifactId>springdoc-openapi-security</artifactId>
				<version>${springdoc-openapi.version}</version>
			</dependency>
			<dependency>
				<groupId>org.springdoc</groupId>
				<artifactId>springdoc-openapi-ui</artifactId>
				<version>${springdoc-openapi.version}</version>
			</dependency>
			<dependency>
				<groupId>org.springdoc</groupId>
				<artifactId>springdoc-openapi-native</artifactId>
				<version>${springdoc-openapi.version}</version>
			</dependency>

			<dependency>
				<groupId>com.c4-soft.springaddons</groupId>
				<artifactId>spring-security-oauth2-webmvc-addons</artifactId>
				<version>${com.c4-soft.springaddons.version}</version>
			</dependency>
			<dependency>
				<groupId>com.c4-soft.springaddons</groupId>
				<artifactId>spring-security-oauth2-test-addons</artifactId>
				<version>${com.c4-soft.springaddons.version}</version>
			</dependency>
			<dependency>
				<groupId>com.c4-soft.springaddons</groupId>
				<artifactId>spring-security-oauth2-test-webmvc-addons</artifactId>
				<version>${com.c4-soft.springaddons.version}</version>
			</dependency>


			<dependency>
				<groupId>org.mapstruct</groupId>
				<artifactId>mapstruct</artifactId>
				<version>${org.mapstruct.version}</version>
			</dependency>
			<dependency>
				<groupId>org.projectlombok</groupId>
				<artifactId>lombok-mapstruct-binding</artifactId>
				<version>${lombok-mapstruct-binding.version}</version>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<build>
		<pluginManagement>
			<plugins>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-compiler-plugin</artifactId>
					<version>3.8.1</version>
					<configuration>
						<source>${java.version}</source>
						<target>${java.version}</target>
						<annotationProcessorPaths>
							<path>
								<groupId>org.projectlombok</groupId>
								<artifactId>lombok</artifactId>
								<version>${lombok.version}</version>
							</path>
							<path>
								<groupId>org.mapstruct</groupId>
								<artifactId>mapstruct-processor</artifactId>
								<version>${org.mapstruct.version}</version>
							</path>
							<path>
								<groupId>org.hibernate</groupId>
								<artifactId>hibernate-jpamodelgen</artifactId>
								<version>${hibernate.version}</version>
							</path>
						</annotationProcessorPaths>
					</configuration>
				</plugin>
				<plugin>
					<groupId>org.springframework.boot</groupId>
					<artifactId>spring-boot-maven-plugin</artifactId>
					<configuration>
						<classifier>${repackage.classifier}</classifier>
						<keepDependenciesWithProvidedScope>true</keepDependenciesWithProvidedScope>
						<createDependencyReducedPom>true</createDependencyReducedPom>
						<image>
							<builder>${image.builder}</builder>
							<env>
								<BP_NATIVE_IMAGE>${image.native}</BP_NATIVE_IMAGE>
								<BP_NATIVE_IMAGE_BUILD_ARGUMENTS>${image.arguments}</BP_NATIVE_IMAGE_BUILD_ARGUMENTS>
							</env>
							<bindings>
								<binding>${ca-certificates.binding}:/platform/bindings/ca-certificates:ro</binding>
							</bindings>
						</image>
					</configuration>
				</plugin>
				<plugin>
					<groupId>org.springframework.experimental</groupId>
					<artifactId>spring-aot-maven-plugin</artifactId>
					<version>${spring-native.version}</version>
					<configuration>
						<removeXmlSupport>true</removeXmlSupport>
						<removeSpelSupport>false</removeSpelSupport>
						<removeYamlSupport>true</removeYamlSupport>
						<removeJmxSupport>true</removeJmxSupport>
					</configuration>
					<executions>
						<execution>
							<id>generate</id>
							<goals>
								<goal>generate</goal>
							</goals>
						</execution>
						<execution>
							<id>test-generate</id>
							<goals>
								<goal>test-generate</goal>
							</goals>
						</execution>
					</executions>
				</plugin>
				<plugin>
					<groupId>org.hibernate.orm.tooling</groupId>
					<artifactId>hibernate-enhance-maven-plugin</artifactId>
					<version>${hibernate-enhance-maven-plugin.version}</version>
					<configuration>
						<failOnError>true</failOnError>
						<enableLazyInitialization>true</enableLazyInitialization>
						<enableDirtyTracking>true</enableDirtyTracking>
						<enableAssociationManagement>true</enableAssociationManagement>
						<enableExtendedEnhancement>false</enableExtendedEnhancement>
					</configuration>
					<executions>
						<execution>
							<goals>
								<goal>enhance</goal>
							</goals>
						</execution>
					</executions>
				</plugin>
				<plugin>
					<groupId>org.graalvm.buildtools</groupId>
					<artifactId>native-maven-plugin</artifactId>
					<version>${native.buildtools.version}</version>
					<extensions>true</extensions>
					<executions>
						<execution>
							<id>build-native</id>
							<goals>
								<goal>build</goal>
							</goals>
							<phase>package</phase>
						</execution>
						<execution>
							<id>test-native</id>
							<goals>
								<goal>test</goal>
							</goals>
							<phase>test</phase>
						</execution>
					</executions>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-shade-plugin</artifactId>
					<version>3.2.4</version>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-surefire-plugin</artifactId>
					<version>3.0.0-M5</version>
				</plugin>
			</plugins>
		</pluginManagement>
	</build>

	<profiles>
		<profile>
			<id>build-image</id>
			<build>
				<pluginManagement>
					<plugins>
						<plugin>
							<groupId>org.springframework.boot</groupId>
							<artifactId>spring-boot-maven-plugin</artifactId>
							<executions>
								<execution>
									<id>build-image</id>
									<goals>
										<goal>build-image</goal>
									</goals>
								</execution>
							</executions>
						</plugin>
					</plugins>
				</pluginManagement>
			</build>
		</profile>
		<profile>
			<id>build-native-image</id>
			<properties>
				<image.builder>paketobuildpacks/builder:tiny</image.builder>
				<image.buildpack>gcr.io/paketo-buildpacks/java-native-image:7.1.0</image.buildpack>
				<image.native>true</image.native>
				<image.arguments>
					-H:+ReportExceptionStackTraces
					--enable-https
					-H:+InlineBeforeAnalysis
					--initialize-at-run-time=io.netty.handler.codec.compression.BrotliDecoder
					--verbose
					--allow-incomplete-classpath
					--trace-class-initialization=org.springframework.util.unit.DataSize</image.arguments>
			</properties>
			<build>
				<pluginManagement>
					<plugins>
						<plugin>
							<groupId>org.springframework.boot</groupId>
							<artifactId>spring-boot-maven-plugin</artifactId>
							<executions>
								<execution>
									<id>build-image</id>
									<goals>
										<goal>build-image</goal>
									</goals>
								</execution>
							</executions>
						</plugin>
					</plugins>
				</pluginManagement>
			</build>
		</profile>
		<profile>
			<id>native</id>
			<properties>
				<!-- Avoid a clash between Spring Boot repackaging and native-maven-plugin -->
				<repackage.classifier>exec</repackage.classifier>
			</properties>
			<dependencies>
				<!-- Required with Maven Surefire 2.x -->
				<dependency>
					<groupId>org.junit.platform</groupId>
					<artifactId>junit-platform-launcher</artifactId>
					<scope>test</scope>
				</dependency>
			</dependencies>
			<build>
				<plugins>
					<plugin>
						<groupId>org.graalvm.buildtools</groupId>
						<artifactId>native-maven-plugin</artifactId>
					</plugin>
				</plugins>
			</build>
		</profile>
		<profile>
			<id>openapi</id>
			<build>
				<pluginManagement>
					<plugins>
						<plugin>
							<groupId>org.springdoc</groupId>
							<artifactId>springdoc-openapi-maven-plugin</artifactId>
							<version>${springdoc-openapi-maven-plugin.version}</version>
							<configuration>
								<apiDocsUrl>${integration-tests.scheme}://${integration-tests.hostname}:${integration-tests.port}/v3/api-docs
								</apiDocsUrl>
								<outputFileName>${project.artifactId}.openapi.json</outputFileName>
								<outputDir>${springdoc-openapi.output-dir}</outputDir>
								<skip>false</skip>
							</configuration>
							<executions>
								<execution>
									<id>integration-test</id>
									<goals>
										<goal>generate</goal>
									</goals>
								</execution>
							</executions>
						</plugin>
						<plugin>
							<groupId>org.springframework.boot</groupId>
							<artifactId>spring-boot-maven-plugin</artifactId>
							<configuration>
								<jvmArguments>
									-Dspring.application.admin.enabled=true
									-Dspring.profiles.active=openapi
								</jvmArguments>
							</configuration>
							<executions>
								<execution>
									<id>pre-integration-test</id>
									<goals>
										<goal>start</goal>
									</goals>
								</execution>
								<execution>
									<id>post-integration-test</id>
									<goals>
										<goal>stop</goal>
									</goals>
								</execution>
							</executions>
						</plugin>
					</plugins>
				</pluginManagement>
			</build>
		</profile>
	</profiles>

	<pluginRepositories>
		<pluginRepository>
			<id>spring-release</id>
			<name>Spring release</name>
			<url>https://repo.spring.io/release</url>
			<snapshots>
				<enabled>false</enabled>
			</snapshots>
		</pluginRepository>
		<pluginRepository>
			<id>spring-milestone</id>
			<name>Spring milestone</name>
			<url>https://repo.spring.io/milestone</url>
			<snapshots>
				<enabled>false</enabled>
			</snapshots>
		</pluginRepository>
		<pluginRepository>
			<id>spring-snapshot</id>
			<name>Spring Snapshots</name>
			<url>https://repo.spring.io/snapshot</url>
			<releases>
				<enabled>false</enabled>
			</releases>
		</pluginRepository>
	</pluginRepositories>
	<repositories>
		<repository>
			<id>spring-release</id>
			<name>Spring release</name>
			<url>https://repo.spring.io/release</url>
			<snapshots>
				<enabled>false</enabled>
			</snapshots>
		</repository>
		<repository>
			<id>spring-milestone</id>
			<name>Spring milestone</name>
			<url>https://repo.spring.io/milestone</url>
			<snapshots>
				<enabled>false</enabled>
			</snapshots>
		</repository>
		<repository>
			<id>spring-snapshot</id>
			<name>Spring Snapshots</name>
			<url>https://repo.spring.io/snapshot</url>
			<releases>
				<enabled>false</enabled>
			</releases>
		</repository>
	</repositories>
</project>




© 2015 - 2024 Weber Informatics LLC | Privacy Policy