Zakładając, że kolejność plików nie jest ważne, a kiedy mówisz żadnych zadań własnych nie jesteś wyjątkiem zadanie ant script, coś pochodzi z tego może być odpowiedni.
<fileset id="Fileset" dir="${basedir}" includes="Test*.java" />
<target name="scr">
<script language="javascript">
<![CDATA[
// Obtain a reference to fileset in the enclosing project
var fileSet = project.getReference("Fileset");
// Now get matching files.
var ds = fileSet.getDirectoryScanner(project);
var includes = ds.getIncludedFiles();
var batchSize = 2;
var batch = 1;
for (var i = 0; i < includes.length; i += batchSize)
{
// Create a new fileset to hold the sub-Fileset.
var filesetN = project.createDataType("fileset");
filesetN.setDir(fileSet.getDir());
// Give the new Fileset an id and associate with the project.
project.addReference("Fileset" + batch, filesetN);
// Populate the sub-Fileset.
for (var j = 0; j < batchSize && (i + j) < includes.length; j++)
{
filesetN.setIncludes(includes[i + j]);
}
batch++;
}
]]>
</script>
<!-- Just to illustrate. -->
<echo message="Set 1: ${toString:Fileset1}" />
<echo message="Set 2: ${toString:Fileset2}" />
<echo message="Set 3: ${toString:Fileset3}" />
</target>
Biorąc pod uwagę sześć plików cytat powyższy daje:
scr:
[echo] Set 1: TestFive.java;TestFour.java
[echo] Set 2: TestOne.java;TestSix.java
[echo] Set 3: TestThree.java;TestTwo.java
nie mają pochodzić z czystego mrówek drodze do osiągnięcia tego celu. Możesz wziąć pod uwagę ant-contrib, który jest dość szeroko stosowanym zestawem rozszerzeń, które obsługują pętle i właściwości zmienne.
Ostateczny komentarz, dla przykładowego zestawu można uzyskać pożądany efekt, ale nie wykracza poza trzy zestawy plików. Korzysta z first
i resource collections.
<target name="reso">
<first id="Fileset1" count="2">
<fileset refid="Fileset" />
</first>
<last id="Fileset3" count="2">
<fileset refid="Fileset" />
</last>
<difference id="Fileset2">
<resources refid="Fileset" />
<resources refid="Fileset1" />
<resources refid="Fileset3" />
</difference>
</target>
Próbowałem uniknąć javascript, ale myślę, że nie ma mowy? –
@John Nie można myśleć o czystym roztworze mrówki. Dodałem kilka innych pomysłów. –
czekaj, możesz umieścić javascript wewnątrz skryptu ant? Co to za magia? – Hoffmann