在NetBeans 8中,在基于maven的项目中,如何在编程时使用jar,但从构建中省略?
我需要在我的vadin web应用程序中访问特定JDBC驱动程序中的一些特定类。但在web应用程序中,我们通常不会在构建(.war文件)中捆绑JDBC驱动程序。相反,JDBC驱动程序属于由Servlet容器(运行时环境)控制的文件夹。
因此,在编辑和编译代码时,我需要将JDBC驱动程序(一个jar文件)放在类路径上。但是这个jar文件必须从构建中省略。
exclusions
标签
我尝试将exclusions
和exclusion
标签添加到我的dependency
元素。但这没有工作- postgresql-9.4-1201.jdbc41.jar
出现在WEB-INF/lib
文件夹。
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.4-1201-jdbc41</version>
<exclusions>
<exclusion>
<groupId>org.postgresql</groupId> Exclude from build
<artifactId>postgresql</artifactId>
</exclusion>
</exclusions>
</dependency>
新概要文件吗?
这是ZNK - M对问题的回答,在netbeans中为maven项目设置自定义运行时类路径,可能是我需要的。
但是创建一个新的项目简介对我来说似乎是一个很小的任务,似乎有点小题大做。而且,我总是希望从构建输出中排除这个jar,而不仅仅是在测试或其他有限的场景中。
您应该在您的pom中添加一个新的配置文件run-with-netbeans,声明额外的依赖项(使用提供的作用域来不将它们包含在发布中)。
然后,您必须将新的配置文件添加到IDE中,以便在命令行中使用-P run-with-netbeans选项运行pom。
但是我只熟悉编辑POM文件的基本知识。如果这种方法是可行的,如果有人能详细说明需要的细节和步骤,那将会很有帮助。
<scope>provided</scope>
在POM文件中使用<scope>
标记,值为provided
。
节选自该页的依赖范围部分,依赖机制介绍:
compile
这是默认作用域,在没有指定时使用。编译依赖项在项目的所有类路径中都可用。此外,这些依赖关系被传播到依赖的项目。提供
这很像compile,但表明您希望JDK或容器在运行时提供依赖项。例如,当为Java企业版构建web应用程序时,您将对Servlet API和相关Java EE API的依赖设置为提供的范围,因为web容器提供了这些类。此作用域仅在编译和测试类路径上可用,并且不可传递。运行时
[...]系统
[...]
[...]
[...]
:
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.4-1201-jdbc41</version>
<scope>provided</scope>
</dependency>
使用provided
作用域代替默认的compile
作用域。这正是它的作用。
<dependency>
<scope>provided</scope>
<groupId>...</groupId>
<artifactId>...</artifactId>
<version>...</version>
</dependency>