问题标签 [maven-war-plugin]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
maven-3 - maven-war-plugin 覆盖和 m2e eclipse 插件
我正在尝试利用 maven-war-plugin 的有用覆盖功能。换句话说,我有一个template-0.0.1.war
包含标签文件、css、js 和图像的模板(打包为 WAR 文件)。
当我设置template-0.0.1.war
为 myApp 项目的依赖项时,我得到一个包含被 myApp 项目中具有相同路径myApp.war
的文件覆盖的所有文件的最终文件。template-0.0.1.war
这是我想要的行为。
但是,我需要在pom.xml
myApp 中引入 maven-war-plugin 的配置:
一旦我引入了这样的插件配置,我就获得了包含myApp 项目和 myApp 项目myApp.war
中所有文件的最终文件,但覆盖了 myApp 项目中具有相同路径的文件。template-0.0.1.war
template-0.0.1.war
这种行为与我的预期完全相反。
有人能告诉我哪里错了吗?
提前致谢。
找到解决方案后编辑:
所描述的问题是由于不同操作的并发性:WAR 覆盖(正常工作)和外部webResources
.
实际上,外部webResources
标签指向模板项目目录:对 Maven 完全没用,但对于“愚弄”m2e eclipse 插件并让它看到模板中包含的自定义标签是必不可少的。
我采用的解决方案是在我的插件部分引入 2 个不同的配置文件pom.xml
:第一个称为“ eclipse ”,我在其中插入了maven-war-plugin
.webResources
和第二个配置文件(称为“标准”并默认激活)没有maven-war-plugin
.
java - Weblogic 10.3 类加载器问题
概括
其应用程序在结构上未更改或任何代码更改,现在遇到类路径问题。唯一改变的是它所在的环境(新的solaris box)。
应用服务器:weblogic 10.3
Maven 战争插件:2.3
错误
在应用程序战争中,有 2 个依赖项具有同一类的不同版本,一个版本缺少某个构造函数……您可以看到这是怎么回事。我们得到一个运行时错误,因为错误的类版本(缺少构造函数)被定位。
现在这是一个 maven 项目,并且依赖项的排序方式使得该类的正确版本将在编译时首先出现在类路径中。
据我们目前所知,所有改变的只是新的构建框,构建部门在其上构建战争文件。
测试完成
如果我在自己的本地环境(windows)上创建战争并将其部署到 weblogic 环境服务器(unix 框),没问题。
但是,当它在构建框(solaris)上构建然后我将其部署到相同的环境时,我遇到了问题。
我比较了两个war文件,没有发现任何差异。
为了确认我的怀疑(首先在类路径上打错了类),我构建了不包括错误版本的包,令人惊讶的是它可以工作。weblogic 类加载器显然在另一个之前加载了这个不正确的类。
问题仍然存在,我需要确定现在突然发生这种情况的原因。
问题
在决定首先加载 lib 中的哪个依赖项方面,weblogic 的类加载器的规则是什么?
除了 MANIFEST 中的版本号之外,这种行为怎么可能在两个完全相同的不同战争之间发生变化?
非常感谢,
用户编辑
根据 Maven 依赖树的要求:
cdm.jar
包含一个名为 FactorValueLite 的类,它是正确的版本,并且在其中还motorratingservice-java-client.jar
存在这个错误版本的类,这个 jar 似乎首先被加载到类路径中。
eclipse - 如何在本地服务器上运行 eclipse m2e webapp 项目?
我正在尝试使用 m2e 创建一个简单的 webapp 作为 maven 项目来帮助我管理依赖项,但我必须遗漏一些东西,因为我无法从 eclipse 运行该项目。
为了提供更多背景信息,这就是我所做的:
首先,我选择创建一个“Maven 项目”
然后,我选择“maven-webapp-archetype”
最后,填写下一步的项目基本信息表,完成项目创建。此时一切看起来都很好。
问题是当我尝试运行该项目时,我没有找到适合在本地服务器上运行该项目的任何东西:
此外,从本地服务器的“添加和删除...”上下文菜单条目中,我的项目不会出现在 Web 项目列表中。
我错过了设置中的一步,还是有其他更合适的方式来启动项目?
maven - Maven 没有将一些 JAR 复制到 WEB-INF/lib
我在 Eclipse 中使用 Maven 创建了一个 Web 项目。我需要该项目的 pentaho 库 jar,这是我的依赖项
当我运行mvn:compile
ormvn eclipse:eclipse
时,它正在下载maven_repo
本地目录中的 JAR 文件我正在使用以下 war 插件
问题是,当我运行mvn war:war
创建 war 文件时,它没有将 libbase-1.2.8.jar 复制到 WEB-INF/lib 文件夹。但它正在复制所有其他 JAR 文件。问题是什么?
maven - maven-war-plugin 增加了我的资源的大小
我有一个 gzipped xml 文件 (/src/main/resources/myfile.library)。当插件将文件复制到目标目录时,它的大小几乎是原来的两倍。我无法再打开文件,不知道它是什么或发生了什么。
有任何想法吗?如何停止插件使用我的资源?
maven - 在 Maven 中,如何输出正在使用的类路径?
对于我目前的目的,我有一个创建war
文件的 Maven 项目,我想看看它在创建war
. 有没有办法在一个命令中做到这一点——而不必编译整个项目?
一种想法是让 Maven 生成target/classpath.properties
文件,然后在该点停止。
java - 从 Maven 项目中的 Alfresco 中删除远程跟踪图像
Alfresco 3.2c 有一个跟踪图像,它使用我需要为项目删除的 Javascript 注入到页脚中。javascript 实际上是alfresco-share-src.zip
在类中的 SDK 中硬编码的org/alfresco/web/scripts/MessagesWebScript.java
。
我们目前正在使用 Maven 项目构建 Alfresco,它从 maven 插件和存储库中提取了大部分 Alfresco 和 Share,为我们提供了干净的根构建添加。然而,由于这个类是硬编码的,我们不想触及原始的jars/zips,我想我可以将文件的新副本添加到share/src/main/java/org/alfresco/web/scripts/MessagesWebScript.java
,将其编译到 war 文件的 WEB-INF 中,从而覆盖将从 jar 加载的内容(是的,我知道这样做的坏方法)。
但是,如果我只是添加文件,则会出现/share/src/main/java/org/alfresco/web/scripts/MessagesWebScript.java:[48,80] error: cannot find symbol
错误
这让我相信它没有引入用于构建 war 文件的相同依赖项(即 spring-surf-parent 依赖项)。如果我尝试将该依赖项添加到 share.pom 文件(如下所示),maven 会成功构建,但依赖项会以某种方式拉入 servlet API jar 文件,将它们添加到战争中,然后我得到预期的The method getJspApplicationContext(ServletContext) is undefined for the type JspFactory
错误。
我的 share.pom 如下所示:
java - Maven:即使在不同时间构建,如何使 SNAPSHOT 工件相同?
我们经常使用 SNAPSHOT 并经常重建,并且发现即使源未更改,生成的工件也不是与上次构建的工件相同的二进制文件。
我希望他们成为。
据我从 SO 帖子中了解到,我无法再次找到它们改变的两个原因:
- JAR/WAR/etc 文件是带有额外元数据的 zip 文件,每个条目都有一个时间戳,即“组装时间”或“编译时间”。
- 签名的 jar 包含签名信息,未排序(即顺序可能在 JVM 之间更改)
我们目前不使用签名的 jars,我可以忍受 JAR/WAR/etc 文件中的所有日期戳为 0,如果这会给我带来二进制身份的话。
显然,这意味着我需要让 Maven Archiver 在组装 jar 时显式设置日期戳,但我无法在文档中找到可以设置它的位置,因此它很可能不存在。快速浏览一下 maven-jar-plugin 和 maven-war-plugin 以了解收集信息的位置并没有让我更明智地了解如何更改它。
我的问题是,我应该如何处理这个问题?
maven - Maven 战争- 包含来自 WEB-INF/classes 的文件
我想从我的 WEB-INF/classes 中选择一个类文件(StartEngine.class)并放在我的 WAR 文件的根目录中以获得以下结构
流程引擎.war
|
|-WEB-INF
|-js
|-StartEngine.class
|
我使用了 Maven 战争,但它没有复制它。如果有人对此有任何解决方案,请帮助我。
google-app-engine - appengine-maven-plugin 在后台有一个 maven-war-plugin?如果我自己定义它会被调用两次
我尝试了很多东西,似乎我的项目执行了两次“maven-war-plugin”。
因此,我无法运行优化,例如将所有类合并到一个 jar 中(使用 maven shade 插件)。
我很确定 appengine-maven-plugin 正在调用 maven-war-plugin 来创建 appengine 打包。我知道这是因为我尝试删除自己对“maven-war-plugin”的定义,但它仍然“神奇地”执行。那样做有意义吗?
我的 pom.xml 是: