Лучше ли Mavenize создавать файлы проекта jar или помещать их в WEB-INF/lib?

Я делал это для всех файлов jar, которые нужны моему проекту Spring MVC:

call mvn install:install-file -DgroupId=vegetables -DartifactId=potatoes -Dversion=1.0 -Dfile=vegetables-1.0.jar  -Dpackaging=jar -DgeneratePom=true

Недавно я, должно быть, превзошел некоторые ограничения на количество зависимостей, которые вы можете перечислить в своем файле pom.xml, потому что я получил сообщение об ошибке:

Your command line is too long

Итак, я удалил некоторые зависимости из pom.xml, которые мой проект больше не использует, и я снова смог запустить проект с maven.

Мой вопрос в том, должен ли я установить все файлы jar в мой репозиторий Maven, как я это делал до сих пор? Или я должен поместить некоторые из них в каталог WEB-INF/lib?

Какая самая лучшая практика здесь?

Ответы

Ответ 1

Я делал то же самое, что и в командной строке, но настраивая maven-install-plugin в моем POM (пожалуйста, прочитайте примечание в конце):

     <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-install-plugin</artifactId>
            <executions>
                <execution>
                    <id>install-vegetables</id>
                    <phase>initialize</phase>
                    <goals>
                        <goal>install-file</goal>
                    </goals>
                    <configuration>
                        <file>${project.basedir}/lib/vegetables-1.0.jar</file>
                        <groupId>vegetables</groupId>
                        <artifactId>potatoes</artifactId>
                        <version>1.0</version>
                        <packaging>jar</packaging>
                    </configuration>
                </execution>
                <execution>
                    <id>install-minerals</id>
                    <phase>initialize</phase>
                    <goals>
                        <goal>install-file</goal>
                    </goals>
                    <configuration>
                        <file>${project.basedir}/lib/minerals-1.0.jar</file>
                        <groupId>minerals</groupId>
                        <artifactId>rocks</artifactId>
                        <version>1.0</version>
                        <packaging>jar</packaging>
                    </configuration>
                </execution>
            </executions>
        </plugin>

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

Ответ 2

Все ваши зависимости должны находиться в локальном репозитории. Согласно конвенции Maven/лучшей практике, вы не должны хранить файлы jar в своем проекте.

Преобразуйте свой проект в полностью управляемый войной проект Maven. Это поместит все ваши зависимости (файлы jar) в каталог webapp WEB-INF/lib. Таким образом, вам не придется беспокоиться о длинных дорогах.

Ответ 3

Вам просто нужно добавить зависимости в файле pom.xml, не нужно устанавливать их вручную. Maven будет загружать библиотеки и помещать их в локальный репозиторий, когда это необходимо. Только если вы хотите использовать сторонние (пользовательские) библиотеки, вы можете пойти на его установку в своем локальном репозитории.