在基于 NetBeans Maven 的项目中,在编程和编译时包含一个库,但从构建中排除



在NetBeans 8中,在基于maven的项目中,如何在编程时使用jar,但从构建中省略?

我需要在我的vadin web应用程序中访问特定JDBC驱动程序中的一些特定类。但在web应用程序中,我们通常不会在构建(.war文件)中捆绑JDBC驱动程序。相反,JDBC驱动程序属于由Servlet容器(运行时环境)控制的文件夹。

因此,在编辑和编译代码时,我需要将JDBC驱动程序(一个jar文件)放在类路径上。但是这个jar文件必须从构建中省略。

exclusions标签

我尝试将exclusionsexclusion标签添加到我的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>

最新更新