2011-12-16 6 views
1

Antの統合は:AntはビルドとはそれがSourceSafeのシステムからソースを取得 API /ユーティリティをsoscmd使用してJavaコードになります。彼らは緊密に統合されていることを知っています。使用しているAntのバージョンは1.6です。したがって、そのバージョンのSubversionはサポートされていません。私のSubversionサーバーはリモートマシン上でサービスとして動作しています。私は、Subversionを使ってAntにソースを取得させたいと思っています。どうすればいい?Subversionと私は次のスキームを実行している

答えて

4

使用ここで提供SvnAntタスク - あなたはsvnantものを得ればhttp://subclipse.tigris.org/svnant.html

+0

Subversion 1.7リリースと互換性がありますか? – lexeme

+0

SvnAntの1つの問題は...ネイティブクライアントを使用している場合、ネイティブクライアントはそれをサポートしていないため、シンボルリンクをサポートしません。 – coolcfan

3

は、これらの詳細は、あなたの道の残りの部分を助けるかもしれません。

私は通常行うことは、その抽出から、次のJARをつかむです:

svnjavahl.jar

  1. svnant.jar
  2. svnClientAdapter.jar
  3. とフォルダに追加ではない私のプロジェクトでは、(つまり、実行時ではなくビルドで使用されるだけです)。

    その後、私のANTスクリプトに私が追加します。その後、

    <path id="svntask.classpath"> 
        <fileset dir="nonruntime_lib/svn"> 
         <include name="*.jar"/> 
        </fileset> 
    </path> 
    

    と:

    <!-- svn export the web root & java --> 
    <svn> 
        <export srcUrl="http://your.svn/web" destPath="dist/web"/> 
        <export srcUrl="http://your.svn/src" destPath="tmp/src"/> 
    </svn> 
    

    わからないに:その後、私はのようなタスクコール何かを追加することができます

    <!-- SVN typedef --> 
    <typedef resource="org/tigris/subversion/svnant/svnantlib.xml" 
        classpathref="svntask.classpath"/> 
    

    をあなたがそれらのJARをすべて必要としているかどうかは分かりませんが、 "彼らは私のために働きます"。幸運にも、他の質問やシナリオを投稿することができます。

    編集

    私は(私は1.6を実行している)、これはSubversionの1.7で動作するかどうかはわかりません。

    これは単なる部分的な解決策です。何らかの理由で、上記の注釈に加えてSilkSVNがインストールされていることを確認する必要がありました。私はそれがなぜであるかわからない。残念ながら、私はすぐに調査する時間がありません。

+0

ただ好奇心が強いですが、org/tigris/subversion/svnant/svnantlib.xmlはsvnantですが、silksvnパッケージsvnantのようですか? – oers

+0

偉大なポイントを私は私がそれを書いたときに私は何を考えていたのか分からない。私はsvnantを参照するために私の記事を編集しましたが、silksvnは編集しませんでした。感謝と偉大なキャッチ! –

1

以下の2つの回答で言及したとおり、SvnAntを使用できます。あなたのSvnAntタスク用のsvnクライアントとしてSvnKitを指定することをお勧めします。

SvnKitは、人気のあるgui svnクライアントSmartSVNがベースとして使用する、純粋なJava svnクライアントです。だからあなた自身のタスクを書いたり、いくつかのbeanshell統合を使いたいなら、svnkitを試してみるべきです。また、Windows、Linux、Mac OSなど、JREを使用している場合に限り使用できます。

P.S.

私は以前はSvnAntユーザーでしたが、今は "svn info"と "svn update"を使用する必要があるため、独自のコードを使用してネイティブsvnクライアントを呼び出しています。

私はトランクを更新するために、ネイティブのLinux SVNクライアントを呼び出すには、execを使用

<exec executable="svn" dir="${trunk.dir}" failonerror="true"> 
    <arg line="update -r ${to.rev} --username ${trunk.user} --password ${trunk.passwd} --depth infinity" /> 
</exec> 

私は「SVNの情報を」呼び出し、出力から実際のリビジョン番号を取得するには、プロセスビルダを使用します(カスタムAntタスクを):

//java code for ant task 
public void execute() throws BuildException { 
    //varible verifying codes ignored...... 
    ProcessBuilder pb = new ProcessBuilder("svn","info"); 
    //The native "svn" client doesn't support symbol link, so run it in the directory instead of specifying the directory as svn info's parameter. 
    pb.directory(_dirToTrunk); 
    //Make sure the output is English. 
    Map<String, String> env = pb.environment(); 
    env.put("LANGUAGE","en_US.UTF-8:en"); 
    Process p = null; 
    try { 
     p = pb.start(); 
     //then get the output and parse the svn revision number. 
    } 
    //catch codes ignored 
} 

希望すると助かります。

関連する問題