Java Maven:如何避免依赖关系?
我是马文的新手。我最近学习了它来解决我在Java和SpringWebApp中遇到的一些依赖性问题。我一直在一个小样本网络应用程序上试用maven。webapp使用JSTL标记。我发现有必要将这些标记放在pom.xml中:Java Maven:如何避免依赖关系?,java,spring,maven,jstl,Java,Spring,Maven,Jstl,我是马文的新手。我最近学习了它来解决我在Java和SpringWebApp中遇到的一些依赖性问题。我一直在一个小样本网络应用程序上试用maven。webapp使用JSTL标记。我发现有必要将这些标记放在pom.xml中: <dependency> <groupId>javax.servlet.jsp.jstl</groupId> <artifactId>jstl-api</artifactId>
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>jstl-api</artifactId>
<version>1.2-rev-1</version>
</dependency>
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>jstl-impl</artifactId>
<version>1.2</version>
</dependency>
但它也在我的WEB-INF/lib中包含了这个jar,当我尝试在Tomcat 7中运行它时,包含它会导致各种错误:
jsp-api-2.1.jar
有没有一种方法可以重写我的依赖项标记,使jsp-api-2.1.jar离开我的WEB-INF/lib
谢谢
固定的。谢谢各位。FWIW,这就是我如何更改JSTL的依赖项标记,以不将JSP-API jar放入我的WEB-INF库中的方法:
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>jstl-api</artifactId>
<version>1.2-rev-1</version>
<exclusions>
<exclusion>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>jstl-impl</artifactId>
<version>1.2</version>
<exclusions>
<exclusion>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
</exclusion>
</exclusions>
</dependency>
javax.servlet.jsp.jstl
将范围更改为“提供”。例如:
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>jstl-impl</artifactId>
<version>1.2</version>
<scope>provided</scope>
</dependency>
org.glassfish.web
jstl impl
1.2
假如
提供的作用域确保编译器可以使用jar,但假定在运行代码时将在运行时“提供”jar。在您的演员阵容中,它由Tomcat提供。有排除部分,类似于下面的部分
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate</artifactId>
<version>3.2.6.ga</version>
<exclusions>
<exclusion>
<groupId>javax.transaction</groupId>
<artifactId>jta</artifactId>
</exclusion>
</exclusions>
</dependency>
org.hibernate
冬眠
3.2.6.ga
javax.transaction
jta
在您的情况下,您添加的一个(或两个)依赖项包括您不需要的依赖项。找到哪一个,并添加排除部分。在这种情况下,最好将javax.servlet.jsp.jstl:jstl api放在“提供”范围内?似乎这个工件就是实际的实现。罗伊,这不是我想要避免的罐子。我需要您在我的WEB-INF/libvirtual-Real中提到的那个,感谢您提供的关于这两个依赖项的提示,这两个依赖项可能都包含在另一个jar中。两人都这样做了。幸运的是,我找到了这个很棒的站点,在这里,您可以查找Maven informaiton以制作依赖项标记:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate</artifactId>
<version>3.2.6.ga</version>
<exclusions>
<exclusion>
<groupId>javax.transaction</groupId>
<artifactId>jta</artifactId>
</exclusion>
</exclusions>
</dependency>