2016-09-04 3 views
0

У меня есть клейкость в build.xml, который загружает всю зависимость в кэш:как развернуть все зависимость в кот в моем build.xml

<target name="init" depends="init-ivy"> 
    ... 
    <ivy:cachepath 
    inline="true" 
    module="jersey-container-servlet" 
    organisation="org.glassfish.jersey.containers" 
    pathid="jersey.classpath" 
    revision="2.23.2"/> 
    <ivy:cachepath 
    inline="true" 
    module="javax.json" 
    organisation="org.glassfish" 
    pathid="json.classpath" 
    revision="1.0.4"/> 
    ... 
</target> 

код компилируется успешно и war создается файл. Теперь мне нужно написать задачу, которая будет развертывать приложение для tomcat. Мне нужно скопировать все зависимости к WEB-INF/lib приложения. Как это делается? Может быть, есть способ включить JAR-файлы зависимостей в WAR-файл? Я новичок в разработке Java, пожалуйста, помогите.

ответ

1

В следующем ответе описывается комплексное решение с использованием ivy file.

Он отвечает на другой вопрос («при условии» зависимостей), но один вы в конечном итоге столкнуться, потому что не все банки, которые вы используете в вашей сборке необходимо будет поставляться с приложением (потому что они уже существуют на tomcat).

Пытаться применить этот ответ к вашему вопросу не просто, потому что вы разрешаете свои зависимости в встроенном режиме (нет файла плюща). Во-первых, я бы рекомендовал совмещая зависимостей в один путь, а не создавать пути вокруг каждой зависимости:

<ivy:cachepath pathid="compile.classpath"> 
    <dependency org="org.glassfish" name="javax.json" rev="1.0.4" /> 
    <dependency org="org.glassfish.jersey.containers" name="jersey-container-servlet" rev="2.23.2" />  
</ivy:cachepath> 

Во-вторых (и ответить на ваш вопрос), это альтернативный плющ retrieve задача, которая используется для размещения плющ файлов на файловой системы. Он также может поддерживать inline resolution следующим образом:

<ivy:retrieve pattern="${build.dir}/lib/[artifact].[ext]"> 
    <dependency org="org.glassfish" name="javax.json" rev="1.0.4" /> 
    <dependency org="org.glassfish.jersey.containers" name="jersey-container-servlet" rev="2.23.2" />  
</ivy:retrieve> 

<war destfile="${war.file}" webxml="${resources.dir}/web.xml"> 
    <fileset dir="${resources.dir}" excludes="web.xml"/> 
    <lib dir="${build.dir}/lib"/> 
</war> 

Итак, в заключении, в то время как это предложили ответ будет работать, я бы рекомендовал исследовать, как конфигурацию работать совместно с внешним файлом плюща для управления зависимостями. Конфигурации могут показаться сложными, но они также очень мощные.


Ваш другой вопрос связан. Использование встроенного режима плюща удобно, но не самый эффективный способ использования плюща. Один вызова к задаче решимости может быть использован для определения зависимостей все проекта, и с помощью конфигураций для разделения этих вверх в различные или классы наборов файлов и т.д.