2017-01-04 1 views
-1

Ich habe ein Java Maven Projekt, in dem ein Bibliothek Jar hängt von der konfigurierten Umgebungsvariable, so dass es in Eclipse ausgeführt habe ich diese Variable in der Registerkarte Umwelt von Maven Run Build erstellt (siehe Bildschirmfoto). Jetzt muss ich diese Swing-App in eine ausführbare JAR-Datei packen und exportieren und den Benutzer zum Testen bereitstellen. Wie übergebe ich diese Umgebungsvariable im Jar, um zur Laufzeit verfügbar zu sein. Ich denke, da wäre eine Möglichkeit, es in der Pom-Datei oder in einer Eigenschaftendatei zu konfigurieren.Java Programmierung Äquivalent von Umgebungswert in Maven Lauf konfiguriert

enter image description here

+0

Ich sehe keinen Screenshot – gba

+0

Mögliche Duplikate von [Maven Jetty-Plugin - wie zu steuern, VM-Argumente?] (Http://StackOverflow.com/Questions/2007192/maven-Jjetty-Plugin-How-to-control- vm-arguments) –

+0

@gba - Screenshot hinzugefügt ... – nanosoft

Antwort

0

Sie können das tun, wie folgt: -

<property> 
      <jvm.options>-Xmx512M</jvm.options> 
    </property> 
    <plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.3</version> 
     <compilerArgs> 
      <arg>${jvm.options}</arg> 
     </compilerArgs> 
    </plugin> 
</plugins> 
1

Sie Ihr Projekt zu einem JAR-Paket und ein Skript Ihr Programm starten bieten.

Haupteintrag in Skript ist:

java -Xmx512M -cp "your jars" "Main method's Class" 
+0

Soll das VM-Argument identisch mit der konfigurierten Umgebungsvariablen sein? Die Variable, die in Linux-Shell exportiert wird, ist dieselbe wie VM-Argumente? Ich bezweifle es ernst, denn laufen, wie Maven in Eclipse als verschiedene Register für Umgebungsvariablen und anderen Abschnitt für VM arguements unter „Argumente“ Tab baut – nanosoft

+0

nicht sie nicht dasselbe sind, aber man kann immer noch meinen Vorschlag mit Ihrem Problem zu lösen, java ** - DGOOLE_API_KEY = XXXX ** -cp "Ihre Gläser" "Hauptmethode Klasse". – rex

+0

Wie ich in meiner Frage erwähnt habe, ist es eine Swing-Anwendung und wird von Benutzern verwendet werden. Es ist nicht vorgesehen, dass es über die Befehlszeile ausgeführt wird, sondern durch Doppelklick. Der Benutzer wird kein Argument für die Ausführung übergeben ... Ich muss die Umgebungsvariable nur innerhalb des JARs bündeln. Ich glaube, es sollte Konfigurationslösung über Maven oder Eigenschaften kommen. – nanosoft

0

Sie können entweder einen -DDGOOLE_API_KEY verwenden = XXXX wie @rex oder tun vorgeschlagen:

System.setProperty("GOOLE_API_KEY","XXXX"); 

In Ihrem Code. Sie müssen sicherstellen, dass diese geladen wird, bevor die Bibliothek es liest. Am besten, als statischer Block in einer sehr vorzeitigen geladenen Klasse.

public class { 

    static { 
    System.setProperty("GOOLE_API_KEY","XXXX"); 
    } 

} 

Wenn finden Sie die Befehlszeile Option -D verwenden Sie es dem Kunden geben, als Klartext, und dies wird es sehr leicht zu machen, sie zu benutzen ...

Bedeutung jeder Das wird laufen Ihre Software wird Ihren API-Schlüssel kennen. Wenn Sie es innerhalb des Glases fest codieren, wird es schwieriger (aber sehr möglich), es zu bekommen.

Wenn Sie es im Code behalten, wird es für gute Leute einfacher, gut zu bleiben.