Как установить каталог lib, в котором работает ant-скрипт из Java?

В моем скрипте сборки Ant я установил свой процессор xslt со следующими строками:

    <xslt>
        <factory>
            <attribute name="http://saxon.sf.net/feature/xinclude-aware" value="true" />
            <attribute name="http://saxon.sf.net/feature/version-warning" value="false" />
        </factory>
        <classpath>
            <fileset dir="${param}/lib">
                <include name="saxon9.jar" />
            </fileset>
        </classpath>
    </xslt>

Когда ANT запускается из командной строки, вот так

"C:\Programs\jre\bin\java.exe" -classpath "C:\ant\lib\ant-launcher.jar" "-Dant.home=C:\ant" org.apache.tools.ant.launch.Launcher Install -Dparam "C:\dir" basedir "C:\dir2\bin" -emacs -f "C:\dir2\build.xml"

Сборка завершена успешно. Однако, когда я вызываю сценарий из Java-программы, как это:

File buildFile = new File(dir2 + "/build.xml");
Project p = new Project();

p.setUserProperty("ant.file", buildFile.getAbsolutePath());
p.setUserProperty("ant.library.dir", "C:/dir2/lib");
p.setUserProperty("param", "C:/dir");
p.setBasedir("C:/dir2/bin");               

DefaultLogger consoleLogger = new DefaultLogger();

consoleLogger.setEmacsMode(true); 
consoleLogger.setErrorPrintStream(System.err);
consoleLogger.setOutputPrintStream(System.out);
consoleLogger.setMessageOutputLevel(Project.MSG_INFO);
p.addBuildListener(consoleLogger);

try {
 p.fireBuildStarted();
 p.initProperties();
 p.init();
 ProjectHelper helper = ProjectHelper.getProjectHelper();
 p.addReference("ant.projectHelper", helper);
 helper.parse(p, buildFile);

p.executeTarget("Install");
p.fireBuildFinished(null);
} catch (BuildException e) {
   p.fireBuildFinished(e);
}

Программа возвращает следующую ошибку xslt: TransformerFactory не распознает атрибут " http://saxon.sf.net/feature/xinclude-aware ". на com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.setAttribute(неизвестный источник). Эта ошибка похожа как в Как выполнить XSLT 2.0 с муравьем?,

Я попробовал несколько вариантов, чтобы установить каталог lib, содержащий saxon (например, с помощью ant.lib.directory), но это не имеет никакого эффекта. Как правильно установить каталог lib из Java (или принудительно noclasspath)?

1 ответ

Вы пытались установить для атрибута "name" элемента "factory" значение "net.sf.saxon.TransformerFactoryImpl"?

Другие вопросы по тегам