是否最好将项目jar文件Maven化或将它们放在WEB-INF / lib中?

时间:2011-07-04 11:46:26

标签: java maven-2 spring-mvc jar pom.xml

我一直在为我的Spring MVC项目需要的所有jar文件执行此操作:

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目录?

这里的最佳做法是什么?

3 个答案:

答案 0 :(得分:10)

我一直在使用命令行做同样的事情,但是在我的POM中配置maven-install-plugin(请阅读最后的说明):

     <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>

效率低,因为文件反复安装,但它比手工制作文件要烦人得多。无论如何,我认为你应该试一试。

答案 1 :(得分:3)

所有依赖项都应驻留在本地存储库下。根据Maven约定/最佳实践,您不应该在项目中保留jar文件。

将您的项目转换为基于完全战争的Maven项目。这会将所有依赖项(jar文件)放在webapp的WEB-INF/lib目录下。因此,您不必担心长路径。

答案 2 :(得分:0)

您只需要在pom.xml文件中添加依赖项,无需手动安装它们。 Maven将下载库并在需要时将其放入本地存储库。只有当您想使用第三方(自定义)库时,才可以将其安装在本地存储库中。