私は3つの方法を持っているJavaクラスを有し、各メソッドは、文字列を返します。私は、エクスポートされ.jar
ているJavaプロジェクトの外にファイルを。私は、コマンド./script1.shを使用してgitのバストからjarファイルを実行すると、私は、コマンドウィンドウに出力を得ます。私の質問は、私はscript1.shファイル内にある3つの可変にそれらの値を割り当てることができる方法、です。私はエコー$ {「Source_branchを」}と入力した場合、私は「XXX_Source_Branch」として出力を取得する必要があります。ここに私のJavaコードは次のとおりです。
package com.main;
public class Engine {
public static void main(String[] args) {
try {
getSourceBranch();
getDestinationBranch();
getDestEnv();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static String getSourceBranch() {
return "XXX_Source_Branch";
}
public static String getDestinationBranch() {
return "XXX_Dest_Branch";
}
public static String getDestEnv() {
return "XXX_Dest_Env";
}
}
jarファイルの名前ですEngine.jar
。そして、私のスクリプトファイルがあります
runjar.sh
ます。java -jar Engine.jar Source_branch Destination_brnach Destination_env
bashのためにJavaからデータを渡します
あなたがオーバーレイStringにJavaからのデータを保存したい場合は、にそれを印刷する必要がありますSystem.out
し、シェルからそれらを読んで。
Javaコード:
System.out.println("your source branch")
System.out.println("your destination branch")
シェルコード
out="$(java -jar Engine.jar)"
sBranch="$(echo "$out"|sed -n '1p' /dev/stdin)"
destBranch="$(echo "$out"|sed -n '2p' /dev/stdin)"
bashのからJavaへデータを渡します
あなたはハードコード文字列ならば、Javaは単なる文字列を使用します。あなたはそれを変更したい場合は、Javaコードを変更する必要があります。
オプション1 - 引数
あなたが使用して、スクリプト内の文字列を渡したい場合java -jar Engine.jar Source_branch Destination_brnach Destination_env
、あなたはあなたにそれらを使用することができますmain
持つメソッドargs
のパラメータ。
たとえば、あなたが使用してmainメソッドの最初の文字列を印刷することができます
System.out.println(args[0]);
あなたがそれを行う場合は、してくださいテスト場合はargs.length
、あなたがアクセスしている最高の引数よりも大きいです。
オプション2 - [システムのプロパティ]
あなたは引数(あなたのメインメソッドの独立した)にアクセスせずにパラメータを取得したい場合は、システムのプロパティを使用する必要があります。
最初は、そのようにするスクリプトを変更します。
java -jar -DSource_branch=yourSourceBranch -DDestination_branch=yourDestinationBranch -DDestination_env=yourDestinationEnv
Engine.jar
なお-D
。つまり、システムのプロパティを渡していることを示しています。これの構文は次のとおりです。-D<key>=<value>
そしてそれが間に位置しなければならないjava
と-jar
。
また、あなたが使用する必要がありますSystem.getProperty()
あなたのコード内のどこからでもアクセスすること。
例えば:
public static String getSourceBranch() {
return System.getProperty("Source_Branch");
}