Subversion и Ant интеграция - PullRequest
       13

Subversion и Ant интеграция

1 голос
/ 16 декабря 2011

Я использую следующую схему: Ant делает сборки кода Java и, используя soscmd API / утилиту, извлекает источники из SourceSafe системы.Я знаю, что они тесно интегрированы.Версия Ant, которую я использую - 1.6.Так что нет поддержки Subversion для этой версии.Мой сервер Subversion работает на удаленной машине в качестве службы, и я хочу, чтобы Ant мог получать источники, используя Subversion .Как бы я это сделал?

Ответы [ 3 ]

5 голосов
/ 16 декабря 2011

Используйте задание SvnAnt, приведенное здесь - http://subclipse.tigris.org/svnant.html

3 голосов
/ 16 декабря 2011

После того, как вы получите svnant, эти детали могут помочь вам до конца.

Обычно я беру следующие JAR из этого извлечения:

  1. svnant.jar
  2. svnClientAdapter.jar
  3. svnjavahl.jar

и добавьте их в папку в моем проекте, которая не будет развернута (т. е. они используются только сборкой, а не средой выполнения).

Затем к своему сценарию ANT добавляю:

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

, а затем:

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

, который затем позволяет мне добавить вызов задачи примерно так:

<!-- 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>

Не уверен, нужны ли вам все эти JAR-файлы или нет, но «они работают для меня».Удачи и не стесняйтесь оставлять сообщения с другими вопросами / сценариями.

Редактировать

Я не уверен, работает ли это с Subversion 1.7 (у меня работает 1.6).

Хорошо, так что это только частичное решение.По какой-то причине мне нужно было убедиться, что SilkSVN был установлен в дополнение к примечаниям выше.Я не уверен, почему это так.К сожалению, сейчас у меня нет времени для расследования.

1 голос
/ 19 декабря 2011

В качестве того, что упоминалось в двух ответах ниже, вы можете использовать SvnAnt;и я рекомендую указать SvnKit в качестве svn-клиента для ваших задач SvnAnt.

SvnKit - это чистый Java-клиент SVN, который используется популярным графическим клиентом SmartSVN в качестве основы.Так что если вы хотите написать свою задачу или просто использовать интеграцию с бобами, попробуйте svnkit.Он также доступен для Windows, Linux, Mac OS ... если у вас есть JRE для него.

PS

Когда-то я был пользователем SvnAnt, но теперь я использую свой собственный код для вызова нативного svn-клиента, потому что мне просто нужно использовать "svn info" и "svn update".

Я использую exec для вызова нативного Linux-клиента svn для обновления транка:

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

Я использую компоновщик процессов для вызова «svn info» и получения фактического номера ревизии из вывода(пользовательская задача муравья):

//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
}

Надеюсь, что это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...