我需要制作一个现有war文件的副本,并更新其中的一个xml文件。我对如何做到这一点的想法是:
task updateWar() << {
def originalWar = file("deploy/mywar.war")
def outputDir = file("deploy")
def wars = [ "war1", "war2" ]
wars.each() { warFile ->
delete "deploy/WEB-INF/ejb.xml"
copy {
//Step 1
from(zipTree(originalWar)) {
include 'WEB-INF/ejb.xml'
}
into outputDir
//Step 2
filter{
String line -> line.replaceAll("<value>OriginalText</value>",
"<value>UpdatedText</value>")
}
}
//Step 3
copy {
from outputDir
into outputDir
include 'mywar.war'
rename 'mywar.war',"${warFile}.war"
}
//Step 4
ant.jar(update: "true", destfile: deploy/${warFile}.war") {
fileset(dir: deploy", includes: 'WEB-INF/**')
}
}
}
task updateWar(type: Zip) {
def originalWar = file("deploy/mywar.war")
def outputDir = file("deploy")
archiveName = "war2.war"
destinationDir = outputDir
from (zipTree(originalWar),{
filesMatching("WEB-INF/ejb.xml") {
filter{
String line -> line.replaceAll("<value>OriginalText</value>",
"<value>UpdatedText</value>")
}
}
})
}
假设您只想用res
文件夹中的文件替换war
中的原始文件,下面是如何实现的:
task updateWar(type: Zip) {
def originalWar = file("deploy/mywar.war")
archiveBaseName = 'mywar'
archiveExtension = 'war'
from(zipTree(originalWar)) {
// Remove the original ejb.xml if it exists
exclude("**/WEB-INF/ejb.xml")
}
// Include our own ejb.xml
from('res/ejb.xml') {
into('WEB-INF/')
}
}
问题内容: 我有一个Web程序,希望用户能够在其中导入文件,并且可以从文件中提取某些文件。我发现了两个类库: 和。据我了解,WAR文件是一个特殊的JAR文件,这是一个特殊的ZIP文件。那么使用会更好吗?如果ZIP和JAR文件几乎相同,为什么需要两个不同的库? 问题答案: 如果查看JarFile API,您会发现它是ZipFile类的子类。 jar特定的类大多只是添加jar特定的功能,例如对清单文件
我想构建一个WAR文件(然后将其部署到Tomcat)。因此,作为练习,我在IDEA Intellij中使用Gradle开始了一个新的Spring启动项目。之后,我在文件中应用了这个插件,比如这个。 问题是,当我尝试在终端中运行时,没有得到war文件!唯一发生的事情是,它将生成一个,其中包含3个子组件、和,但在这些组件中没有战争。 我应该怎么做才能获得WAR文件?我看过这段视频,但这家伙使用Mave
问题内容: 如何用另一个.yml文件更新先前的conda环境。在具有多个需求文件(例如)的项目上工作时,这非常有用。 例如,下面是一个包含和pip软件包的文件: 碱基 实际环境是使用创建的 。 稍后,需要将其他软件包添加到中。例如,另一个文件需要导入这些更新。 先前完成此任务的尝试包括: 创建具有导入定义的文件: 然后运行命令: 。 这是行不通的。有什么想法吗? 问题答案: 尝试使用 或无需激活环
我有一个应用程序服务器,它有一堆文件,我可能需要在运行时动态组合它们的子集,并将它们作为压缩文件在单个HTTP响应中发送。让我们假设这些文件是A和B,我可以将它们预先存储为A.zip和B.zip并将它们组合成包含A和B的c.zip,或者只存储它们A和B,并将它们压缩到c.zip中。哪个更快?
问题内容: 我们可以创建一个zip新文件并使用Go Language添加文件。 但是,如何使用GoLang使用现有的zip文件添加新文件? 如果可以使用Create函数,如何获取zip.writer参考? 有点困惑。 问题答案: 经过更多分析,我发现无法使用现有的zip文件添加任何文件。 但是,通过遵循此URL中提供的技巧,我能够使用tar文件添加文件。