Regex 在ant任务中从jar中删除版本号

Regex 在ant任务中从jar中删除版本号,regex,ant,Regex,Ant,我正在尝试将所有JAR从一个目录复制到另一个目录。在此过程中,我希望删除文件名末尾的版本号。(例如my-jar-1.2.3.jar到my-jar.jar) 我试图绕着mapper转,但我找不到一个正则表达式来让它工作。我试过这个: <copy todir="lib" flatten="true"> <mapper type="regexp" from="(.*)-[^.]*(\.jar)" to="\1\2" /> <fileset dir=

我正在尝试将所有JAR从一个目录复制到另一个目录。在此过程中,我希望删除文件名末尾的版本号。(例如my-jar-1.2.3.jar到my-jar.jar)

我试图绕着mapper转,但我找不到一个正则表达式来让它工作。我试过这个:

<copy todir="lib" flatten="true">
    <mapper type="regexp" from="(.*)-[^.]*(\.jar)" to="\1\2" />
        <fileset dir="my.files.dir">
            <include name="**/*.jar" />
            <type type="file" />
        </fileset>
</copy>


在maven ant任务库中有一个映射器,它可以实现这一点。

这应该可以正常工作:

<copy todir="lib" flatten="true">
    <mapper type="regexp" from="(.*)-[^-]*(\.jar)" to="\1\2" />
    <fileset dir="my.files.dir">
        <include name="**/*.jar" />
        <type type="file" />
    </fileset>
</copy>

试试这个

<project>
    <mkdir dir="lib"/>
    <copy todir="lib"
        verbose="true">
        <fileset dir="jars/">
            <include name="*.jar"/>
        </fileset>
        <mapper type="regexp"
            from="^(.+?)-[0-9].*$"
            to="\1.jar"/>
    </copy>
</project>
但不是这些:

foo-alpha.jar
foo.jar
因此,我稍微调整了一下模式:

<project>
    <mkdir dir="lib"/>
    <copy todir="lib"
        verbose="true">
        <fileset dir="jars/">
            <include name="*.jar"/>
        </fileset>
        <mapper type="regexp"
            from="^(.+?)-[0-9]*.*\.jar$"
            to="\1.jar"/>
    </copy>
</project>

$ ant
    [mkdir] Created dir: lib
     [copy] Copying 5 files to lib
     [copy] Copying jars/bar-3.4.5.jar to lib/bar.jar
     [copy] Copying biff-86.4.2.jar to lib/biff.jar
     [copy] Copying jars/boff-2.31.2.jar to lib/boff.jar
     [copy] Copying jars/foo-1.2.3.jar tolib/foo.jar
     [copy] Copying jars/foo-bar-3.3.2.3.jar to lib/foo.jar

$ant
[mkdir]已创建目录:lib
[复制]将5个文件复制到库
[复制]将jars/bar-3.4.5.jar复制到lib/bar.jar
[复制]将biff-86.4.2.jar复制到lib/biff.jar
[复制]将jars/boff-2.31.2.jar复制到lib/boff.jar
[复制]复制jars/foo-1.2.3.jar tolib/foo.jar
[复制]将jars/foo-bar-3.3.2.3.jar复制到lib/foo.jar
最后一个是个麻烦制造者


这样做可能值得分成两份:一份是为了在找到版本号时小心,另一份是为了处理没有版本号的罐子。

下面是一个更好的答案:

<project>
    <mkdir dir="lib"/>
    <copy todir="lib"
        verbose="true">
        <fileset dir="jars/">
            <include name="*.jar"/>
        </fileset>
        <mapper type="regexp"
            from="^(.+?)-[0-9]+.*\.jar$"
            to="\1.jar"/>
    </copy>
</project>

处理“最后一个是麻烦制造者”

<project>
    <mkdir dir="lib"/>
    <copy todir="lib"
        verbose="true">
        <fileset dir="jars/">
            <include name="*.jar"/>
        </fileset>
        <mapper type="regexp"
            from="^(.+?)-[0-9]+.*\.jar$"
            to="\1.jar"/>
    </copy>
</project>