- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个建立 war 的项目(没问题)。而且,那场 war 需要与一些shell脚本一起打包。由于该 war 包含的属性文件因站点而异,因此我们不能简单地按原样安装 war ,而是在其中存储属性文件。这就是shell脚本所做的。
我想将我的 war 打包为一场未包装的 war 。我在Assembly Descriptor中看到了<unpacked>
,但我无法使其正常工作。
这是我的第一个bin.xml
,我按原样打包了 war 。这工作正常:
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<id>bin</id>
<formats>
<format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>${project.basedir}/src/assembly/scripts</directory>
<includes>
<include>deploy.sh</include>
<include>lock_build.sh</include>
<include>description.sh</include>
<include>url-encode.pl</include>
</includes>
<outputDirectory>/</outputDirectory>
</fileSet>
<fileSet>
<directory>${project.build.directory}/${project.artifactId}-${project.version}</directory>
<outputDirectory>${project.artifactId}</outputDirectory>
</fileSet>
</fileSets>
</assembly>
这是我第一次尝试打开包装:
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<id>bin</id>
<formats>
<format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>${project.basedir}/src/assembly/scripts</directory>
<includes>
<include>deploy.sh</include>
<include>lock_build.sh</include>
<include>description.sh</include>
<include>url-encode.pl</include>
</includes>
<outputDirectory>/</outputDirectory>
</fileSet>
</fileSets>
<moduleSets>
<moduleSet>
<includes>
<include>{$project.groupId}:${project.artifactId}:war</include>
</includes>
<binaries>
<includes>
<include>${project.build.directory}-${project.artifactId}-${project.version}.${project.packaging}</include>
</includes>
<outputDirectory>${project.artifactId}</outputDirectory>
<unpack>true</unpack>
</binaries>
</moduleSet>
</moduleSets>
</assembly>
这是我最后一次尝试展开战斗:
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<id>bin</id>
<formats>
<format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>${project.basedir}/src/assembly/scripts</directory>
<includes>
<include>deploy.sh</include>
<include>lock_build.sh</include>
<include>description.sh</include>
<include>url-encode.pl</include>
</includes>
<outputDirectory>/</outputDirectory>
</fileSet>
</fileSets>
<moduleSets>
<moduleSet>
<binaries>
<attachmentClassifier>war</attachmentClassifier>
<outputDirectory>${project.artifactId}</outputDirectory>
<unpack>true</unpack>
<includeDependencies>true</includeDependencies>
<dependencySets>
<dependencySet/>
</dependencySets>
</binaries>
</moduleSet>
</moduleSets>
</assembly>
在这最后的两次尝试中,我只打包了脚本, war 没有结束。
${project.build.directory}/${project.artifactId}-${project.version}
目录,该目录包含 war 中的几乎所有文件,但是它不包含我的
MANIFEST.MF
条目,其中包括将 war 链接回特定Jenkins构建和Subversion修订版的信息。
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<id>bin</id>
<formats>
<format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>${project.basedir}/src/assembly/scripts</directory>
<includes>
<include>deploy.sh</include>
<include>lock_build.sh</include>
<include>description.sh</include>
<include>url-encode.pl</include>
</includes>
<outputDirectory>/</outputDirectory>
</fileSet>
</fileSets>
<dependencySets>
<dependencySet>
<outputDirectory>${project.artifactId}</outputDirectory>
<unpack>true</unpack>
<scope>runtime</scope>
</dependencySet>
</dependencySets>
</assembly>
当我运行它时,我得到:
[INFO] ------------------------------------------------------------------------
[INFO] Building My Project 1.0.0
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-assembly-plugin:2.5.2:single (default-cli) @ myproj ---
[INFO] Reading assembly descriptor: src/assembly/bin.xml
[WARNING] Cannot include project artifact: \
com.vegicorp:myproj:war:1.0.0; \
it doesn't have an associated file or directory.
[INFO] Building zip: ~/workdir/trunk/myproj/target/archive/myproj.zip
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
zipper 里面是 war 中所有精美的 jar ,没有包装,但没有包装。
最佳答案
我知道我应该能够将解包的 war 添加到我的程序集中。我看到了unpack
选项,并且我知道它适用于其他依赖项。但是,看来我只能通过<dependencySet>
或<moduleSet>
访问它。我应该可以将我的项目指定为自己的模块。我一定做错了什么。
脾排气
这是我讨厌Maven的一件大事:Maven很好地向您隐藏了东西,这很好,因为它可以阻止您执行不应做的事情。当开发人员构建Ant build.xml
文件时,我讨厌它,因为大多数开发人员不了解如何进行构建,并且build.xml
变得不可读。使用Maven,这不是问题。只需配置您的项目,Maven就会为您解决这个问题。
但是有时Maven就像一个黑盒子,上面有一堆操纵杆和按钮。您坐在那里插入和拉动操纵杆和按钮,试图弄清楚如何使它完成您想做的事情。我花了太多时间来帮助开发人员配置他们的Maven项目。他们想要做一些与众不同的事情,例如使用休眠或从WSDL文件构建源代码,并且不知道如何让Maven来完成他们想要的事情。
一位开发人员将其描述为自动驾驶汽车,无法完全驶向您想要的地方。您甚至可能在窗口外看到目的地,但是您无法弄清楚如何操纵汽车的目的地来到达目的地。
我想做的应该很容易。我只想创建一个程序集,而不是使用压缩的war文件,而是希望将其解压缩。
在Ant中,这可以在单个任务中完成。在Maven中,这是一个神秘的过程。我想我快要走了,我可能会缺少一个小的配置参数,它将使所有工作正常进行,但是我已经花了数小时来进行此工作。
我最终做了什么
我用maven-dependency-plugin解开了 war 。我不确定这是否行得通,因为我不希望依赖插件下载war,但是似乎可以理解,当我指定war时,我正在谈论当前版本,而没有下载任何内容。 (我的Maven repo 中甚至没有 war )。
我还必须将Maven从2.x升级到3.x,因为我需要确保maven-dependency-plugin
在maven-assembly-plugin
之前运行。由于两者都在构建的打包阶段中运行,因此Maven 2.x无法保证插件的运行顺序。
一旦使用了该插件,我所要做的就是在我的程序集插件中指定解压缩 war 文件的目录,该目录包含在我的zip文件中。
我仍然想知道如何在程序集插件本身中使用<unpack>
实体,而不必使用另一个插件来解压我的 war 。如果有人可以告诉我如何在汇编文件本身中进行解压缩,则将其标记为正确的答案。
pom.xml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.9</version>
<executions>
<execution>
<id>unpack</id>
<phase>package</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/unwar/${project.artifactId}</outputDirectory>
<artifactItems>
<artifactItem>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${project.version}</version>
<type>war</type>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.5.2</version>
<configuration>
<finalName>${project.artifactId}</finalName>
<appendAssemblyId>false</appendAssemblyId>
<outputDirectory>${project.build.directory}/archive</outputDirectory>
<descriptors>
<descriptor>src/assembly/bin.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<id>bin</id>
<formats>
<format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>${project.basedir}/src/assembly/scripts</directory>
<fileMode>0755</fileMode>
<lineEnding>lf</lineEnding>
<includes>
<include>deploy.sh</include>
<include>lock_build.sh</include>
<include>description.sh</include>
<include>url-encode.pl</include>
</includes>
<outputDirectory>/</outputDirectory>
</fileSet>
<fileSet>
<directory>${project.build.directory}/unwar</directory>
<outputDirectory>/</outputDirectory>
</fileSet>
</fileSets>
</assembly>
<useProjectArtifact>true</useProjectArtifact>
,而我没有。但是,这默认为true
。删除它仍然可以使其正常工作。 /
中的目录名称前面包含一个<outputDirectory>
。删除它没有什么区别。 mvn assembly:single
来测试程序集更改。毕竟,当我只是想使程序集正常工作时,为什么要整个构建并重新打包。当您仅运行mvn assembly:single
时-即使所有内容都已打包,您也会收到此错误:[WARNING] Cannot include project artifact: \
com.vegicorp:myproj:war:1.0.0; \
it doesn't have an associated file or directory.
mvn package
,那么一切都将变得很不错。<includes/>
来做到这一点,但是因为我有 war 而不是 jar ,所以我不得不在<include>
中包括一个分类器。<dependencySets>
<dependencySet>
<outputDirectory>${project.artifactId}</outputDirectory>
<unpack>true</unpack>
<scope>runtime</scope>
<includes>
<include>${project.groupId}:${project.artifactId}:*:${project.version}</include>
</includes>
</dependencySet>
</dependencySets>
mvn package
,它就可以工作。maven-dependency-plugin
拥有的方法要好得多。现在,与程序集有关的所有信息都在程序集XML文件中。
关于maven - 在大会中进行一场无休止的 war ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27529159/
当我尝试从 netbeans 构建 ear 项目时,为什么 maven ear 插件会运行 war:war(插件目标) 我的过程: 我右键单击 ear 项目(其中列出了 war 依赖项)并首先清理,然
在 Java EE 环境下,我构建了一个包含多个 JSP 文件的网页。让我们假设包含的 JSP 之一是 header.jsp。可以与 Stackoverflow 使用的非常相似,显示有关用户、链接等的
我想知道使用 maven package phase 创建的 war 文件是否等同于使用 maven war plugin war:war goal 创建的 war 文件。 假设我们有一个像这样的 p
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我想根据配置文件(dev 或 prod)配置属性文件,但是属性文件的位置未正确构造。我在 SO 上找到了类似问题的答案,但这些答案都没有帮助解决这个问题。 我收到的错误如下: Error loadin
我想知道部署的“WAR”文件会分解到 JBoss 7 中的哪个位置?在 JBoss 4.3 中,它会在“tmp”文件夹中的某处爆炸,但我无法找到它在 JBoss 7 中爆炸到的位置。谢谢 最佳答案 它
我想创建一个多模块项目,其中多个模块属于 war 类型。例如 somejars servletsAndJsps springMVCapp angularJsApp 其中 3 个可以作为 WAR 应用程
我必须在单元测试期间测试托管在 Tomcat 上的 Web 服务的代码覆盖率。我将进行手动测试意味着我将在我的 http 请求中传递不同的参数值,并且需要为发送到服务器的每个请求的每个测试用例提供覆盖
我是一个 Jboss Wildfly 8.2 实例我有一个 webapp ROOT.war和另一个 OTHER.war我需要类(class) OtherXYZ.class那是里面 OTHER.war能
因此,在 VPS Ubuntu 服务器上尝试使用 Maven 进行全新安装时出现此错误。 我已经安装了必要的元素来制作它,但仍然无济于事。 root@iHRS:~/hapi-fhir-jpaserve
健身download page只有 standalone.jar 选项,这也是说明的目的。 是否有可能在单独的应用程序服务器上安装 FitNesse,例如 Tomcat?没有直接下载任何 war /耳
我想在 JBoss 4.2 中部署一场 war ,但我无法控制它的目录,所以我无法替换 jsf-impl.jar和 jsf-api.jar . 我的问题是:如何配置war才能依赖于jsf-impl.j
我想在将 war 任务输出部署到存储库之前设置它的文件名。 例如项目名称是 abc最初它会导致 abc-1.0.0-SNAPSHOT.war 但我希望应该有两个生成的内容相同的 war 文件: def
我有一个 Maven pom,它使用 war 。但实际上,我不想构建 war 文件,我只想收集所有依赖的 jar 并创建一个完整的部署目录。 所以我正在运行 war:exploded生成部署目录的目标
注意:我无法将它们打包到 EAR 中。这里有一些限制。 我有 2 个 war 文件。 help.war 和 helpConnect.war 两者都放置在 GlassFish 服务器的同一域中。 从 h
我有一个项目,其中 3 个 war-modules 被打包在一个 ear-module 中。我的问题是每个库 jar 都包含在每个 war 模块以及 ear 模块中,这使得生成的 ear 文件非常大(
我有一个在 artifactory 中发布的第三方打包 war 。我需要创建一个 gradle 作业,它将从 artifactory 中获取 war,将其分解到一个临时目录,将一些自定义库(jars)
我们有一个运行当前 Web 服务的 Apache tomcat 服务器。我们试图部署第二个版本(进行了一些调整),但是当我们复制 war 文件时,第一个版本停止工作。为什么?? 最佳答案 您的 Web
我有几个 tomcat 应用程序,使用 .war 文件部署在 tomcat 中。尽管这些 war 彼此独立,但它们都是更大概念/应用程序的一部分,而且经常,一场 war 需要调用另一场 war 的代码
过去,Web 应用程序的静态资源始终位于 src/main/webapp 下。 最近,Spring Initializr为我创建了一个新的项目布局,因此发现资源应该位于src/main/resourc
我是一名优秀的程序员,十分优秀!