2017-10-07 1 views
0

Ich entwickle Spring-Projekt. Ich möchte Anmeldeinformationen von der Befehlszeile laden, nicht im Code storying. Ich versuche, diesen gradle BefehlFehler beim Übergeben des Arguments von der grodle-Befehlszeile an Spring-Projekt (nicht Boot)

gradlew build -Dspring.datasource.username=tester 

auszuführen, und wenn ich den Frühling Projekt Inbetriebnahme, stoppt das Programm auf einem Haltepunkt, und ich sehe, ob die Variable deklariert ist oder nicht. Ich habe versucht, -P anstelle von -D zu verwenden, aber es hat immer noch nicht geholfen.

Ich deploy die Feder-App aus der Ferne mit bmuschko Plugin Ich habe versucht zu verwenden, aber auch ohne Erfolg. Ich habe Java-Code-Eigenschaften eingecheckt, indem ich das von Spring unterstützte System.getProperties() - und Environment-Objekt verwendet habe.

Anwendungseigenschaften werden erfolgreich geladen.

WICHTIG: Ich sah viele Tutorials, wie man es macht, aber mit Spring Boot verwende ich nur ausgewählte Komponenten von Spring. Zum Beispiel: http://nixmash.com/post/passing-arguments-to-spring-boot - das funktioniert nicht in meinem Fall, weil ich keine BootRun-Aufgabe habe.

Irgendwelche Ideen? Fehle ich etwas in meinen Schritten?

Hier ist meine build.gradle

group 'example' 
version '1.0.0' 


apply plugin: 'application' 
apply plugin: 'war' 
apply plugin: 'java' 
apply plugin: 'com.bmuschko.cargo' 
apply plugin: 'org.liquibase.gradle' 

compileJava.options.encoding = 'UTF-8' 

mainClassName = 'api.optic.config.WebAppInitializer' 
sourceCompatibility = 1.8 

buildscript { 
    repositories{ 
     jcenter() 
     mavenCentral() 
    } 
    dependencies{ 
     classpath 'com.bmuschko:gradle-cargo-plugin:2.2.3' 
     classpath 'org.junit.platform:junit-platform-gradle-plugin:1.0.0-RC3' 
     classpath 'org.liquibase:liquibase-core:3.4.1' 
     classpath "org.liquibase:liquibase-gradle-plugin:1.2.4" 
     classpath "mysql:mysql-connector-java:5.1.13" 
    } 
} 

project.ext { 
    springVersion = "4.3.6.RELEASE" 
    junitVersion = "5.0.0-RC3" 
} 

repositories { 
    mavenCentral() 
} 

dependencies { 

    compile "org.springframework:spring-core:${springVersion}" 
    compile "org.springframework:spring-context:${springVersion}" 
    compile "org.springframework:spring-context-support:${springVersion}" 
    compile "org.springframework:spring-beans:${springVersion}" 
    compile "org.springframework:spring-web:${springVersion}" 
    compile "org.springframework:spring-webmvc:${springVersion}" 
    compile "org.springframework:spring-orm:${springVersion}" 
    compile "org.springframework:spring-oxm:${springVersion}" 
    compile "org.springframework:spring-jdbc:${springVersion}" 
    compile "org.springframework:spring-test:${springVersion}" 
    compile group: 'mysql', name: 'mysql-connector-java', version: '5.1.38' 

    compile group: 'javax.mail', name: 'javax.mail-api', version: '1.5.6' 


    compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.25' 
    compile group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.2' 

    compile group: 'com.fasterxml.jackson.module', name: 'jackson-module-parameter-names', version: '2.9.0.pr2' 
    compile group: 'com.fasterxml.jackson.datatype', name: 'jackson-datatype-jdk8', version: '2.9.0.pr2' 
    compile group: 'com.fasterxml.jackson.datatype', name: 'jackson-datatype-jsr310', version: '2.9.0.pr2' 
    compile 'javax.servlet:javax.servlet-api:3.1.0' 

    testCompile "org.junit.jupiter:junit-jupiter-api:${junitVersion}" 
    testRuntime("org.junit.jupiter:junit-jupiter-engine:${junitVersion}") 
} 

cargo { 
    containerId = 'tomcat8x' 
    port = 8080 

deployable { 
    context = 'example' 
} 

remote { 
    hostname = 'host.name.com' 
    username = 'tomcat' 
    password = 'pass' 
} 

Antwort

0

Grundsätzlich 2 Ausgaben

waren

1. Namenskonflikt: in application.properties den Namen innerhalb der $ {} war anders als das von Befehl zur Verfügung gestellt -Linie

Lösung:

application.properties 
spring.datasource.username=${username} 

und in gradle Befehlszeilen

gradle build -Pusername=tester 

2. Dot Ausgabe mit gradle:

nicht

gradle build -Pspring.datasource.username=tester 

auch wenn Sie in application.properties haben setzen können

spring.datasource.username=${spring.datasource.username} 

weil Sie eine Ausnahme erhalten:

Ausführung fehlgeschlagen für Task ': processResources'.

Die Datei '. \ Src \ main \ resources \ application.properties' konnte nicht in '. \ Build \ resources \ main \ application.properties' kopiert werden.

Lösung:

Anstelle von Punkten verwenden _ Zeichen

gradle build -Pspring_datasource_username=tester 

und in Anwendungseigenschaften

spring.datasource.username=${spring_datasource_username} 
Verwandte Themen