[JAVA] Erstellen Sie mit Gradle Spring Boot-Projekte nach Umgebung

Es gibt verschiedene Möglichkeiten, einen Build auf Gradle nach Umgebung auszuführen. Dieses Mal werde ich vorstellen, wie die War-Datei ausgegeben wird, nachdem die Einstellungen von application.properties von Spring Boot neu geschrieben wurden.

Das verwendete Entwicklungstool ist STS, und es wird davon ausgegangen, dass Gradle Buildship funktioniert.

Schließlich wurde der vom roten Rahmen umgebene Teil zu Gradle Tasks hinzugefügt. Durch Ausführen können Sie die War-Datei für jede Umgebung ausgeben. スクリーンショット 2019-10-07 22.02.48.png

Vorbereitung

Spring Initializr So erstellen Sie eine Vorlage für das Projekt. Wählen Sie Gradle Project in Project aus, wählen Sie Packaging aus und klicken Sie zum Herunterladen auf die Schaltfläche Generate. Dieses Mal werden wir davon ausgehen, dass Krieg produziert wird.

Entpacken Sie nach dem Herunterladen die Zip-Datei Importieren Sie es als Gradle-Projekt in STS.

Verzeichnisaufbau

demo
│  build.gradle                     //Fügen Sie hier ein Build-Skript hinzu
│  application_template.properties  //Erstelle eine neue
│
├─.gradle
├─.settings
├─bin
├─gradle
└─src
    ├─main
    │  ├─java
    │  │  └─com
    │  │      └─example
    │  │          └─demo
    │  │                DemoApplication.java  //Reparieren
    │  │
    │  └─resources
    │          application-dev.properties     //Erstelle eine neue
    │          application-product.properties //Erstelle eine neue
    │          application.properties         //Reparieren
    │
    └─test

Einstellungsdatei

Bereiten Sie in Spring Boot eine Datei mit dem Namen application-environment name.properties vor Sie können die Einstellungen für jede Umgebung anwenden, indem Sie den Umgebungsnamen in application.properties festlegen. Bereiten Sie daher die folgenden drei Dateien unter Ressourcen vor.

application.properties


spring.profiles.active=dev

application-dev.properties


sample_data=Development Environment

application-product.properties


sample_data=Production Environment

Beispielanwendung

Dieses Mal werde ich eine sehr einfache Anwendung ausführen, die den Inhalt der Einstellungsdatei für jede Umgebung anzeigt. Schreiben wir Application.java wie folgt um.

DemoApplication.java


package com.example.demo;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;

@SpringBootApplication
public class DemoApplication {
	
	@Value("${sample_data}")
	private String data;  //Dieser Wert ist das Beispiel der Einstellungsdatei_Lesen Sie aus dem Wert der Daten

	public static void main(String[] args) {
		ConfigurableApplicationContext ctx = SpringApplication.run(DemoApplication.class, args);
		DemoApplication demo = ctx.getBean(DemoApplication.class);
		demo.run();
	}
	
	private void run() {
		System.out.println(data);
	}
}

Bei der Ausführung sollte die in application.properties festgelegte Datei gelesen und der der Umgebung entsprechende Wert angezeigt werden.

Ausführungsergebnis (Federprotokoll weggelassen)


Development Environment

Schreiben Sie ein Build-Skript

Führen Sie dieses Mal die Aufgabe für jede Umgebung in der Ansicht "Gradle Tasks" von STS aus und geben Sie den Krieg aus. Führen Sie zunächst den Vorgang zum Ersetzen von application.properties durch die aus, für die die zu erstellende Umgebung festgelegt ist. Lassen Sie uns die folgende Vorlagendatei application.properties erstellen.

application_template.properties


spring.profiles.active=${buildEnv}

Schreiben Sie als Nächstes eine Aufgabe, um application.properties mit einer Datei zu überschreiben, die den $ {buildEnv} -Teil der Vorlagendatei ersetzt. Fügen wir es zu build.gradle hinzu. Da wir dieses Mal den Befehl war verwenden, vergessen Sie nicht, die Einstellungen des Befehls war zu beschreiben.

build.gradle


plugins {
	// (Unterlassung)
}
//Kriegsbefehlseinstellungen hinzugefügt
war {
	enabled = true
	archiveName 'sample.war'
}

// (Unterlassung)

//Jeder Dateiname
def templateFile = 'application_template.properties'
def configFile = 'application.properties'
//Name der Zielumgebung (ersetzen Sie später einen Wert)
def targetEnv = ''

task replaceConfig {
	description 'Replace application.properties environment.'

	doLast {
		println '    start replacing :' + targetEnv
		//Ausführungsteil kopieren
		copy {
			// from:Geben Sie das Verzeichnis an, das die zu kopierenden Dateien enthält
			from '.'
			// include:Dieses Mal gebe ich den zu kopierenden Dateinamen an
			include templateFile
			// into:Zielverzeichnis kopieren
			into 'src/main/resources'
			// application.In Eigenschaften umbenennen
			rename(templateFile, configFile)
			
			// ${buildEnv}Ersetzen
			expand([
				buildEnv: targetEnv
			])
			println "    replacing finished"
		}
	}
	//Wenn die Ersetzungsaufgabe abgeschlossen ist, verwenden Sie den Befehl war, um war auszugeben (wenn es sich um eine JAR-Datei handelt, machen Sie sie zu einem JAR).
	finalizedBy {
		war
	}
}

Die Kriegsaufgabe wird nun ausgeführt, nachdem der Kopiervorgang ausgeführt wurde. Dies allein ist der Wert von targetEnv jedoch immer noch ein leeres Zeichen. Beschreiben Sie daher den einzustellenden Teil. Ich werde mehr hinzufügen.

build.gradle



//(Weggelassen)

def templateFile = 'application_template.properties'
def configFile = 'application.properties'
def targetEnv = ''

task replaceConfig {
	// (Unterlassung)
}

task warProduct {
	//Wird im Build der Ansicht "Gradle-Aufgaben" nach Einstellungsgruppe angezeigt
	group = 'build'
	description 'Create war file for product environment.'

	doLast {
		//Setze targetEnv
		targetEnv = 'product'
	}
	//Führen Sie nach dem Festlegen von targetEnv die Task replaceConfig aus
	finalizedBy {
		replaceConfig
	}
}

//dev ist dasselbe wie Product
task warDev {
	group = 'build'
	description 'Create war file for dev environment.'
	
	doLast {
		targetEnv = 'dev'
	}
	finalizedBy {
		replaceConfig
	}

}

Ich habe geschrieben, um die replaceConfig-Task auszuführen, nachdem in jeder Task targetEnv festgelegt wurde. Das sollte funktionieren. Das Folgende ist die ungeschnittene Version.

build.gradle


plugins {
	id 'org.springframework.boot' version '2.1.9.RELEASE'
	id 'io.spring.dependency-management' version '1.0.8.RELEASE'
	id 'java'
	id 'war'
}
war {
	enabled = true
	archiveName 'sample.war'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

//Jeder Dateiname
def templateFile = 'application_template.properties'
def configFile = 'application.properties'
//Name der Zielumgebung (ersetzen Sie später einen Wert)
def targetEnv = ''

task replaceConfig {
	description 'Replace application.properties environment.'

	doLast {
		println '    start replacing :' + targetEnv
		//Ausführungsteil kopieren
		copy {
			// from:Geben Sie das Verzeichnis an, das die zu kopierenden Dateien enthält
			from '.'
			// include:Dieses Mal gebe ich den zu kopierenden Dateinamen an
			include templateFile
			//Zielverzeichnis kopieren
			into 'src/main/resources'
			// application.In Eigenschaften umbenennen
			rename(templateFile, configFile)
			
			// application_In der Vorlage${buildEnv}Ersetzen
			expand([
				buildEnv: targetEnv
			])
			println "    replacing finished"
		}
	}
	//Wenn die Ersetzungsaufgabe abgeschlossen ist, wird war mit dem Befehl war ausgegeben.
	finalizedBy {
		war
	}
}

task warProduct {
	//Wird im Build der Ansicht "Gradle-Aufgaben" nach Einstellungsgruppe angezeigt
	group = 'build'
	description 'Create war file for product environment.'

	doLast {
		//Setze targetEnv
		targetEnv = 'product'
	}
	//Führen Sie nach dem Festlegen von targetEnv die Task replaceConfig aus
	finalizedBy {
		replaceConfig
	}
}

//dev ist dasselbe wie Product
task warDev {
	group = 'build'
	description 'Create war file for dev environment.'
	
	doLast {
		targetEnv = 'dev'
	}
	finalizedBy {
		replaceConfig
	}
}

Dies ist abgeschlossen. Wenn Sie warDev oder warProduct über Gradle-Aufgaben ausführen, wird in build / lib eine Kriegsdatei erstellt. Wenn Sie den Krieg entpacken und die darin enthaltenen application.properties überprüfen, sollte dies die Einstellung jeder Umgebung sein.

Recommended Posts

Erstellen Sie mit Gradle Spring Boot-Projekte nach Umgebung
Booten nach Umgebung mit Spring Boot of Maven
Erstellen eines Java-Projekts mit Gradle
◆ Konstruktionsnotiz für Spring Boot + Gradle-Umgebung
Wechseln Sie die Umgebung mit dem Boot-Argument in SpringBoot
Erstellen Sie mit Gradle ein Spring Boot + Docker-Image
(IntelliJ + gradle) Hallo Welt mit Spring Boot
Erstellen Sie eine Website mit Spring Boot + Gradle (jdk1.8.x)
Führen Sie die Scala-Anwendung mit Spring Boot über Gradle aus
Persönliches Memo Führen Sie das Webprojekt Spring Boot + Gradle mit Codenvy (Eclipse Che) aus.
Spring Boot Entwicklung-Entwicklungsumgebung-
Java-Tipps - Erstellen Sie mit Gradle ein Spring Boot-Projekt
Ich wollte Spring Boot in einem Multiprojekt gradle
Erstellen Sie eine Spring Boot-Umgebung mit Windows + VS-Code
Zeigen Sie die Gradle-Aufgabe im Spring Boot-Projekt an
Mit Spring Boot herunterladen
Erstellen Sie mit Docker eine Spring Boot-Entwicklungsumgebung
Wechseln Sie die Umgebung mit Spring Boot application.properties und @ Profile-Annotation
So erstellen Sie eine Docker-Umgebung mit Gradle for IntelliJ
SSO mit GitHub OAuth in der Spring Boot 1.5.x-Umgebung
Erstellen einer Datenbankumgebung mit Docker in Spring Boot (IntellJ)
Hallo Welt mit Spring Boot
Implementieren Sie GraphQL mit Spring Boot
Beginnen Sie mit Spring Boot
Hallo Welt mit Spring Boot!
Spring Boot 2 Multiprojekt mit Gradle
Führen Sie LIFF mit Spring Boot aus
SNS-Login mit Spring Boot
Datei-Upload mit Spring Boot
Spring Boot beginnt mit dem Kopieren
Spring Boot beginnend mit Docker
Erstellen einer Docker-Umgebung mit WSL
Hallo Welt mit Spring Boot
Setzen Sie Cookies mit Spring Boot
Verwenden Sie Spring JDBC mit Spring Boot
Aufbau der Docker x Spring Boot-Umgebung
Modul mit Spring Boot hinzufügen
Erste Schritte mit Spring Boot
Build Spring für Android 2.0.0
Erstellen Sie mit Spring Boot einen Mikrodienst
Mail mit Spring Boot verschicken
Ändern Sie das Injektionsziel für jede Umgebung mit Spring Boot 2
Erstellen Sie mit IntelliJ IDEA eine Entwicklungsumgebung "Spring Thorough Introduction"
Erstellen Sie mit Java + Spring eine Web-APP-Entwicklungsumgebung mit Visual Studio Code
[Java] Beispielprojekt zum Entwickeln von Webanwendungen mit Spring Boot
Verwenden Sie die Standardauthentifizierung mit Spring Boot
Erstellen Sie mit Docker eine Node.js-Umgebung
gRPC auf Spring Boot mit grpc-spring-boot-Starter
Erstellen Sie mit Pleiades 4.8 eine Tomcat 8.5-Umgebung
Erstellen Sie eine App mit Spring Boot 2
Hot Deploy mit Spring Boot-Entwicklung
Datenbankverknüpfung mit doma2 (Spring Boot)
Spring Boot: Restful API-Beispielprojekt
Bis "Hallo Welt" mit Spring Boot
Erstellen Sie eine Anfrage-App mit Spring Boot