LINUX.ORG.RU

Изощрённый вопрос по ant


0

0

Вопрос по ant, может кто сталкивался. Есть такая структура каталогов:

build.xml
build.properties

dir1/subdir1.1
    /subdir1.2
    /subdir1.3
dir2/subdir2.1
dir3/subdir3.1
    /subdir3.2
.../...

В каждом каталоге subdirX.X также есть свой build.xml.
Необходимо сделать так, чтобы при добавлении новой поддиректории, например, dir6/subdir6.1 ,
не надо было править главный build.xml на предмет вызова <ant dir="dir6/subdir6.1" /> .
Информация о порядке сборки должна браться из файла build.properties, в котором и нужно регистрировать добавление новой поддиректории,
причём, порядок сборки важен.
★★★★

Давно я его не видел, но если "изкаропки" это сделать нельзя, то можно легко написать custom task и юзать ее.

PartyZan ★★★
()
Ответ на: комментарий от PartyZan

Угу, что-то вроде:

import java.io.File;

import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.taskdefs.Ant;

public class SystemBuild extends Task {

    // space-separated list of Solutions to build
    private String solutions;

    public void setSolutions(String solutions) {
	this.solutions = solutions;
    }

    @Override
    public void execute() throws BuildException {
	String[] values = solutions.split(" ");
	for (String value : values) {
	    value = value.replace('.', File.separatorChar);
	    value += File.separatorChar + "build";

	    Ant ant = new Ant(this);
	    ant.setDir(new File(value));
	    ant.execute();
	}
    }
}

Просто думал, что можно "из коробки".

Bohtvaroh ★★★★
() автор топика
Ответ на: комментарий от denis_ka

В общем я изначально искал что-то вроде цикла for, вариант foreach + propertyregex из contrib помог, странно что такие полезные таски не включены в основную ветку.

Bohtvaroh ★★★★
() автор топика
Ответ на: комментарий от Bohtvaroh

считается что for это императивный стить, а ант используется деларативный, поэтому в анте много чего нет..

denis_ka
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.