web-applications - Maven webapp - 从 web 应用程序派生的 jar 中排除 java 资源

标签 web-applications maven resources jar war

我有一个非常具体的问题。 我创建了一个 web 应用程序,并希望除了 web war 之外还有一个类的 jar 构建。 没问题,我是这样做的:

    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-war-plugin</artifactId>
      <version>2.2</version>
      <configuration>
        <attachClasses>true</attachClasses>
      </configuration>
    </plugin>

这样,src/main/resources 中的资源也会进入 jar 中。但由于这些资源仅适用于该 Web 应用程序,因此我不希望将它们放在 jar 中。我可以将它们移至 webapp src 文件夹,但我需要对属性文件进行过滤,因此它必须是一个资源文件夹,因此会包含在 war/jar 构建中。

<resources>
  <resource>
    <directory>src/main/resources</directory>
    <filtering>true</filtering>
  </resource>
</resources>

我尝试通过配置 maven-jar-plugin 来排除它们:

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.4</version>
    <configuration>
      <excludes>
        <exclude>**properties</exclude>
      </excludes>
    </configuration>
  </plugin>

适用于由 jar:jar 构建的单个 jar,但不幸的是不适用于安装阶段完成的 jar 构建。

有没有办法将这些配置应用到maven-war-plugin?

我知道我可以通过添加构建 jar 的执行来扩展配置,在本地安装它并将其部署到远程存储库,但这有点困惑。

欢迎任何帮助。

最佳答案

实现此目的的一种方法是将 Java 源代码移动到一个单独的项目,然后将其作为依赖项包含在 WAR 项目中。这样,您就可以控制 JAR 文件中的内容,并且可以将其他文件保留在 WAR 项目中、应用过滤等。

我发现将功能分离为细粒度的项目通常是解决问题的最佳方法,而不是设置多个具有复杂配置的插件来执行相同的操作。如果需要复杂的设置,则可能是错误的方法。尽量保持简单:-)

关于web-applications - Maven webapp - 从 web 应用程序派生的 jar 中排除 java 资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9792476/

相关文章:

web-applications - 使用 Javascript 将用户生成的文本按原样添加到 DOM,而不使用白名单或黑名单

c# - Type Class(在 app_Code 中)存在于 "solution.dll"和 "app_code.wxdafd.dll"中

java - 如何在 Sharepoint 中显示 Java portlet

java - 虽然已正确安装Java并配置了JAVA_HOME,但Maven无法编译

java - RavenDB 4 中的 QueryDSL

c# - 如何在Winforms C#中获取按钮背景图片的名称

c# - 高度频繁地创建类的短期新实例是否效率低下?

asp.net - 使用母版页asp.net时如何在文件夹中查找页面

java - Maven 如果失败则重试依赖下载

dictionary - 免费字符串字典(名词)