Не включать src / lib / *. Jar в файл war - PullRequest
0 голосов
/ 17 мая 2019

Я хочу, чтобы при запуске mvn verify

включал все файлы из папки /lib/ в архив войны в папке 'web-inf / lib`

Так что вот мой pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.myhost</groupId>
    <artifactId>sailero</artifactId>
    <name>myapp</name>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>


  <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>
        <dependency>
            <groupId>com.auth0</groupId>
            <artifactId>java-jwt</artifactId>
            <version>3.7.0</version>
        </dependency>
<dependency>
            <groupId>com.host</groupId>
            <artifactId>some-lib</artifactId>
            <scope>system</scope>
            <version>0.0.1</version>
            <systemPath>${project.basedir}/lib/some-lib-0.0.1.jar</systemPath>
</dependency>


<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.2.2</version>
                <configuration>
                    <configuration>
                        <packagingIncludes>lib/*.jar</packagingIncludes>
                    </configuration>
                </configuration>
</plugin>

в консоли:

mvn verify

Но на войне НЕ ВКЛЮЧЕНО some-lib-0.0.1.jar

на войне на \target\myapp-1.0-SNAPSHOT.war\WEB-INF\lib\ -> не существует "some-lib-0.0.1.jar ", но все остальные зависимости включены.

Ответы [ 4 ]

2 голосов
/ 17 мая 2019

Плагин Maven war автоматически копирует все зависимости проекта в WEB-INF / lib. Поэтому, если вашей войне нужна зависимость, просто поместите соответствующий GAV в раздел зависимостей этого модуля.

Пример: В вашем pom у вас есть зависимость от:

    <dependency>
        <groupId>com.auth0</groupId>
        <artifactId>java-jwt</artifactId>
        <version>3.7.0</version>
    </dependency>

Таким образом, оно будет автоматически включено в WEB-INF/lib вашей WAR.

Теперь это не работает так с зависимостями в области действия system, и это является основной причиной проблемы здесь. Короче говоря, этот вопрос уже был задан / дан ответ в SO.

В заключение, я предлагаю избавиться от системной зависимости и поместить ее хотя бы в локальный репозиторий или в идеале в какой-нибудь прокси, такой как Nexus или Artifactory. Но, конечно, вы можете протестировать другие подходы, предложенные в приведенной ссылке.

0 голосов
/ 18 мая 2019

Вот правильный подход:

сначала установите "some-lib-0.0.1.jar" в локальном репозитории maven:

mvn install: install-file -Dfile = myproject \ lib \ some-lib-0.0.1 -DgroupId = com.host -DartifactId = some-lib -Dversion = 0.0.1 -Dpackaging = jar

и второй в pom.xml

   <dependency>
                   <groupId>com.host</groupId>
                   <artifactId>some-lib</artifactId>
                   <version>0.0.1</version>
               </dependency>
0 голосов
/ 18 мая 2019

Также я нашел другой подход:

Создайте папку « lib » в вашем проекте следующим образом: «\src\main\webapp\WEB-INF\lib» Нужно скопировать «jars» и т. Д., Который вы хотите включитьвнутри вашей папки WAR.Вызывайте ваш maven билд, как обычно.Я использую «mvn install», который создает файл сборки войны

0 голосов
/ 18 мая 2019

Эта проблема исправлена:

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.2.2</version>
                <configuration>
                    <webResources>
                        <resource>
                            <directory>lib</directory>
                            <targetPath>WEB-INF/lib</targetPath>
                        </resource>
                    </webResources>
                </configuration>
            </plugin>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...