我有一个使用Maven打包为EAR的Java EE项目,它包含以下结构的两个WAR模块(一个web one mobile):
getwd()
setwd("C:/Users/Dev/Desktop/Joe")
library(xlsx)
library(rJava)
library(xlsxjars)
#get file names
f = list.files("./")
#read files
dat = lapply(f, function(i){
x = read.xlsx(i, sheetIndex = 1, sheetName = NULL, startRow = 24,
endRow = NULL, as.data.frame = TRUE, header = FALSE)
#return columns with names and colors
x = x[, c(1, 2, 3, 4), drop=FALSE]
#return the data
x
})
library(plyr)
df1 <- ldply(dat, data.frame) ## convert list into a dataframe
#remove NA's
complete.cases(df1)
x <- df1[complete.cases(df1),]
str(x)
#show only rows that start with numbers or 1 letter and then numbers
df <-df1[grepl("^[0-9]|^[a-zA-Z][0-9].*", df1$X1), ]
print(df)
pth <- "C:/Users/Dev/Desktop/Joe/"
# Iterate within each row of df
for(i in 1:nrow(df)){
# Create 1st path
dir.create(paste0(pth , df$X1[i]))
# Create 2nd and 3rd paths
dir.create(paste0(pth, df$X1[i], "/",df$X2[i]))
dir.create(paste0(pth, df$X1[i], "/",df$X3[i]))
dir.create(paste0(pth, df$X1[i], "/",df$X4[i]))
# write data.frame row as txt
write.table(df[i, ], file=paste0(pth, df$X1[i], "/", df$X1[i],".txt"), sep=";")
}
我在Web.war / WEB-INF中有一个目录,其中包含两个.wars共有的.xhtml文件
有没有办法指示Maven在构建期间自动将此目录复制到另一个.war中?
例如。我想..
EAR
-Entities.jar
-EJB.jar
-Test.jar
-Web.war
-Mobile.war
构建成
WebApp-Web/src/main/webapp/WEB-INF/emails/*
和
WebApp/WebApp-web/WEB-INF/emails
(我正在使用WebApp/WebApp-mobile/WEB-INF/emails
btw)
答案 0 :(得分:2)
如果将共享资源添加到“父项目”(或其他地方),则可以在maven-war-plugin的webResources标记中定义相对路径(对于两个Web项目):
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
<webResources>
<resource>
<directory>../src/main/resources</directory>
<targetPath>WEB-INF</targetPath>
</resource>
</webResources>
</configuration>
</plugin>
另一种方法是使用maven-resources-plugin在构建时从相对路径复制文件,但我相信maven-war-plugin方法更好。
使用maven-resources-plugin :(来源how-to-get-a-war-package-with-resources-copied-in-web-inf)
我只更改了目录,使其相对于其父目录(即:../src/main/resource
)
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.4.2</version>
<executions>
<execution>
<id>default-copy-resources</id>
<phase>process-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<overwrite>true</overwrite>
<outputDirectory>${project.build.directory}/${project.artifactId}-${project.version}/WEB-INF/</outputDirectory>
<resources>
<resource>
<directory>../src/main/resources</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
答案 1 :(得分:1)
如果您正在使用实现Servlet 3.0或更新版本的Web容器,那么您可以利用Web片段功能将这些公共文件构建到一个jar文件中,该文件将添加到每个文件的WEB-INF / lib目录中Web应用程序。
通过将诸如xhtml文件之类的Web资源放在jar文件的META-INF / resources目录中,使其可用。可能与这些xhtml文件关联的任何web.xml配置都可以放在META-INF / web-fragment.xml文件中。