[英]Maven: Adding classes from war/web-inf/classes as a jar to war/web-inf/lib
[英]Maven: Local dependecy file not found into war/WEB-INF/lib
我添加了本地依赖库( jar
文件):
<dependency>
<groupId>com.oracle.jdbc</groupId>
<artifactId>ojdbc7</artifactId>
<version>12.1.0.2</version>
<scope>system</scope>
<systemPath>${project.basedir}/libs/ojdbc7-12.1.0.2.jar</systemPath>
</dependency>
一切正常,直到maven生成战争伪像为止。
我在生成的war文件中查找,但是里面没有jar依赖项。
有任何想法吗?
我知道我可以使用maven installfile
。 我需要使用这种依赖关系声明来解决这个问题。
从Maven文档中 :
system :此作用域与提供的作用域相似,只是您必须提供显式包含它的JAR。 该工件始终可用,并且不会在存储库中查找。
提供的 :这很像编译,但是表明您希望JDK或容器在运行时提供依赖项。 例如,在为Java Enterprise Edition构建Web应用程序时,您将对Servlet API和相关Java EE API的依赖关系设置为提供的范围,因为Web容器提供了这些类。 该作用域仅在编译和测试类路径上可用,并且不可传递。
似乎系统范围需要容器或JDK提供依赖关系作为提供的范围。 因此,该依赖项未打包到WAR文件中。
您可以使用maven-war-plugin
将依赖项打包到lib文件夹中,如下所示:
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
...
<webResources>
<resource>
<directory>libs</directory>
<targetPath>WEB-INF/lib</targetPath>
<includes>
<include>ojdbc7-12.1.0.2.jar</include>
</includes>
</resource>
</webResources>
</configuration>
</plugin>
WAR是Servlet容器(如Tomcat,Glassfish,JBoss(...))的Web存档。 它们由Servlet规范指定。 规范指出,数据源(数据库)在Servlet容器的字段中。
(...)键入javax.sql.DataSource,在使组件对应用程序可用之前,容器将为其引用数据源。
您应该将数据库驱动程序放置到servlet容器而不是Web应用程序。
作为Maven构建的一部分,编译范围中的依赖项会自动添加到目标的WEB-INF / lib中。 系统范围的依赖性不是,系统范围的依赖性必须通过定义明确提供。 有关以下网址的更多信息
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.