В настоящее время я работаю над довольно крупным проектом, который был перенесен из Ant в Maven. Нет проблем с самим процессом сборки (он прекрасно компилирует и упаковывает исходный код).
Проблема в том, что у меня также есть много целей, которые генерируют дополнительные ресурсы для проекта (компилируют LessCSS, генерируют и загружают документацию, генерируют tld
файлы для пользовательских тегов и функций и т. Д.). Я не уверен, как я должен справиться с этими задачами. Давайте возьмем цель, которая строит CSS и JS в качестве примера (другие более или менее похожи, но не связаны). Это выглядит так (упрощенно):
<target name="build.css_js">
<concat destfile="${webapp.dir}/scripts/main.js">
<fileset dir="${webapp.dir}/scripts/src" includes="*.js"/>
</concat>
<!-- build css files from less sources -->
<taskdef name="lesscss" classname="com.asual.lesscss.LessEngineTask" classpathref="libraries" />
<lesscss input="${webapp.dir}/syles/src/input.less" output="${webapp.dir}/styles/output.css" />
</target>
В pom.xml
у меня установлен следующий плагин:
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<phase>generate-resources</phase>
<configuration>
<tasks>
<echo message="Hello World from pom.xml"/>
<ant target="build.css_js"/>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
Зависимости, которые я использую, больше не находятся в нашем репозитории SVN (так как они управляются Maven), поэтому я переключил переменную библиотеки, чтобы указать на репозиторий Maven:
<property name="lib.dir" location="${env.HOMEPATH}/.m2/repository" />
Это не хорошо, так как этот путь может быть действителен только на моей машине. Я не знаю другого способа ссылаться на библиотеки из репозитория Maven, и мне нужны они для запуска целей ant.
- Мой подход в порядке или есть способ лучше?
- Как мне решить проблему с библиотекой?
- Некоторые ресурсы необходимы при упаковке проекта, но некоторые - нет. Есть ли фаза жизненного цикла, которая выходит за рамки компиляции / пакета? Я обнаружил жизненный цикл
site
, который, я думаю, соответствует моим потребностям.
- В идеале, мне следует полностью отказаться от файла сборки ant, но я не уверен, стоит ли пытаться заставить скрипты работать как плагины maven (в настоящее время я понятия не имею, как это сделать). Что вы думаете об этом?
Я новичок в Maven, поэтому любые предложения приветствуются.