2012-04-27 16 views
0

私のプロジェクトでは、ディレクトリの作成、ファイルの削除など、多くのことを行うためにantタスクを使用しています。この場合、SVN-serverから完全に動作するブランチのリストを取得します。これはすべて私のプログラムの実行時に発生し、javaコードからタスクを起動します。ランタイム中にANTタスク(プロパティを設定)を操作する

私の質問です:antファイル(tasks.xml)を操作することは可能ですか?ユーザーはユーザー名とパスワードの組み合わせを入力する必要があります。タスクを起動するときは、これらの資格情報をプロパティの代わりに自分のant-taskで使用する必要があります。

のAnt-ファイル:私はJavaでそれを使用する方法

<target name="getBranchList"> 
    <exec executable="c:/svnclient/svn.exe" 
      output="c:/test/output/versionsonsvn.log"> 
     <arg value="ls" /> 
     <arg value="--username" /> 
     <arg value="${svn.user}" /> 
     <arg value="--password" /> 
     <arg value="${svn.password}" /> 
     <arg value="--non-interactive" /> 
     <arg value="--trust-server-cert" /> 
     <arg value="${svn.server}" /> 
    </exec> 
</target> 

import org.apache.tools.ant.*; 

public static void main(final String[] args) { 
    Vector<String> v = new Vector<String>(); 
    v.add("getBranchList"); 
    v.add("someOtherTask"); 
    fireAntTasks("c:/test/tasks.xml", v); } 

private void fireAntTasks(String fileName, Vector<String> v) { 
    File taskFile = new File(fileName); 
    if (buildFile.exists()) { 
     Project p = new Project(); 
     p.setUserProperty("ant.file", buildFile.getAbsolutePath()); 
     p.init(); 
     ProjectHelper helper = ProjectHelper.getProjectHelper(); 
     p.addReference("ant.projectHelper", helper); 
     helper.parse(p, buildFile); 
     p.executeTargets(v); 

    } else { 
     System.out.println("File not found!"); 
    } 
} 

私が想像できる唯一のソリューションは、ファイルを直接操作することである( "でプロパティを設定tasks.xml ")。しかし、おそらくそこにこの作業を取得するためのより良い方法は...ある

挨拶

クリスチャン

答えて

1

私は、私は完全にあなたを理解していないが、私は交換するユーザー入力を取得しようとしているあなたを推測していますいくつかの特性。

Input Taskを使用すると、ユーザーに変数を保存できるかどうかを尋ねるメッセージが表示されます。

または、property taskでantを実行する前にユーザーが編集するプロパティファイルを読み込むことができます。

+0

私が探していたものと全く同じです!プログラムの開始時に資格情報(SVN、データベース、Windows)を要求し、後でプログラムは必要なときに入力タスクを使用して挿入する必要があります。どうもありがとうございました! –

1

あなたはloadproperties taskでこのような何かを達成することができますし、プロパティファイル:

<loadproperties srcFile="build.properties"/> 

すべてのユーザーがビルドディレクトリにbuild.propertiesを作成し、このようにそれに値を配置する必要があります。

svn.user = user 
svn.password = password 

このファイルがホームディレクトリに存在するように、あなたはまた、それを作ることができます:

<loadproperties srcFile="${user.home}/build.properties"/> 

この方法でファイルを保護します。

+0

ありがとう!私はそれを試してみましょう... –

関連する問題