как использовать задачу Apache Ant в моем коде Java


Я хочу использовать одну из задач Ant (scp) из моего кода. Есть ли какой-нибудь способ сделать это?

Должен ли я просто ссылаться на одну из библиотек Ant и вызывать API непосредственно из моего кода?

4 2
scp

4 ответа:

Да, вы можете довольно легко вызывать задачи Ant из вашего кода.

Вот пример того, как расширить задачу муравья:

import org.apache.tools.ant.Project;
import org.apache.tools.ant.Target;
import org.apache.tools.ant.taskdefs.Copy;

public class MyCopyTask extends Copy {
    public MyCopyTask() {
        setProject(new Project());
        getProject().init();
        setTaskName("MyCopy");
        setTaskType("MyCopy");
        setOwningTarget(new Target());
    }
}

Вот как его использовать в коде:

MyCopyTask copier = new MyCopyTask();
copier.setFile(srcFile);
copier.setTofile(toFile);
copier.execute();

Вот еще немного информации:

Это, безусловно, сработает, чтобы включить задачу Ant в ваш Java-код. Мы уже делали это раньше в качестве последнего средства. Один из них заключается в том, что вы, скорее всего, будете устанавливать некоторые специфические свойства муравьев (например, setProject), чтобы заставить задачу действительно работать. Это может сделать его немного неудобным в использовании. Кроме того, вам, вероятно, понадобятся, как вы уже упоминали, библиотеки времени выполнения Ant, чтобы заставить это работать.

Моей первой рекомендацией было бы посмотреть, есть ли способ вызвать фактический SCP-код, который вы хотите прямо без муравья над головой. Второй альтернативой будет поиск библиотеки Java SCP или выяснение того, что использует задача Ant scp. См. УПП через Java дополнительные примеры. Последняя рекомендация будет включать в себя задачу муравья, как описано выше.

Я думаю, что Вызов системного вызова будет проще:

try {
            Runtime.getRuntime().exec("ant scpTask");
        } catch (IOException e) {
            e.printStackTrace();
        }

Я думаю, что Runtime.getRuntime().exec("ant deploy"); зависит от вашей ОС, если вы просто запустите его в одной фиксированной ОС, это действительно более простой и легкий способ получить то, что вы хотите. :)