2010-08-16 3 views
2

Я хочу добавить уведомление об авторских правах в ряд файлов, сгенерированных в Ant-сборке. Какой самый простой способ сделать это?Добавить уведомление обо всех файлах в каталоге с помощью Ant

Я думал об использовании <concat>, но я не понимаю, как запустить его на наборе файлов без конкатенации всех файлов в наборе файлов.

Спасибо!

ответ

7

Похоже, что <concatfilter> может быть вашим другом.

<echo message="/* Copyright text */${line.separator}" file="copyright.txt"/> 

<copy todir="dest_dir"> 
    <fileset dir="src_dir"/> 
    <filterchain> 
    <concatfilter prepend="copyright.txt"/> 
    </filterchain> 
</copy> 
+0

Это похоже на приятное решение. попробуйте! – juandopazo

0

Один вариант может заключаться в использовании <concat>, но в пределах antcontrib<foreach> Задача.

+0

Antcontrib зло. – gotofritz

+0

@fritzfromlondon: В каком смысле? –

+1

Он пытается превратить XML в язык программирования, к которому он не подходит. Это создает беспорядок, если/then/loops, который становится легко unmaintanable. Если вы хотите написать сценарий, просто используйте язык сценариев и вызовите его с помощью apply/exec или напишите пользовательскую задачу ant. Это мое мнение, конечно, но я всегда рекомендую против него, и я не единственный. – gotofritz

2

Если вы хотите только выборочно добавить авторское право, вы можете использовать команду копирования, которая заменяет токены @ COPYRIGHT @ в файлах.

<copy todir="../backup/dir"> 
    <fileset dir="src_dir"/> 
    <filterset> 
     <filter token="COPYRIGHT" value="This text is my copyright!"/> 
    </filterset> 
    </copy> 
+0

Проблема в том, что мой код находится в javascript, а компрессоры удаляют все комментарии, поэтому я не могу использовать токены :( – juandopazo

+0

Не является ли уведомление об авторском праве формой комментариев? Извините, t понять, какую проблему вы пытаетесь решить –

+0

Javascript minifiers удаляют все комментарии, поэтому они удаляют уведомление об авторских правах из моих файлов. Я хочу добавить его снова после процесса миниатюры. – juandopazo

1

Один из вариантов, который не упоминался до сих пор, заключался в написании пользовательской задачи Ant в Java. Я понял, что есть много факторов, которые нужно учитывать, чем предварительная предварительная лицензия на файл после начала моей собственной работы над пользовательской задачей, которая имеет больше требований, чем «concat». Некоторые из сценариев и правил, которые я должен был рассмотреть:

  1. Каждый файл, который будет распространен, должен содержать только 1 экземпляр лицензии.
  2. Имеет ли текущий файл лицензию?
  3. Имеет ли текущий файл текущую лицензию?
  4. Если файл начинается с комментария, значит, это лицензия, а он актуальный?
  5. Это файл, требующий лицензии? (Не хотите писать текст в двоичный файл или файл, который не будет распространен.)

Работа продолжается, поэтому мне не обязательно иметь код для обмена, но может быть, идея может помочь вам в правильном направлении, если ваши требования больше, чем мультяшка из коробки, и вы не хотите использовать antcontrib.

Если вы используете или рассматриваете maven, то самое время сделать переключатель. Вы можете управлять сборками муравьев из pom.xml, а также делать предварительную обработку файлов перед их созданием. Проверьте плагин mycila, который работает прямо из коробки.

Writing your own ant task

Maven in 5 minutes

Link to Mycila Maven plugin

Смежные вопросы