maven和gradle打war包遇到的问题及总结
程序员文章站
2022-05-22 21:10:28
...
1.遇到的问题:
现有一图片服务器, 要求发到tomcat时 为文件目录:
|- image-web
|- upload
|- WEB-INF
|- web.xml
|- lib
|- index.jsp
也就是图片的资源文件需要放在web-inf的外面,方便服务器直接访问,
(tomcat不能通过url直接方法web-inf里面的内容,只能通过代码间接访问)
但是用maven和gradle 的war命令时:
却一直错打成了:
|-image-web
|-WEB-INF
|-web.xml
|-lib
|-class
|-upload
也就是到class里面去了。
我的项目源文件目录是按照maven标准目录来的,即:
|-pom.xml
|-src
|-main
|-java
|-resources
|-upload
|-web-app
|-index.jsp
|-WEB-INF
|-web.xml
gradle和maven出现的问题还不一样,gradle和maven的lib下都有文件,只是maven的class下没有upload。
我的gradle.build文件:
group 'com.test'
version '1.0'
apply plugin: 'java'
// 引用插件
apply plugin: 'war'
sourceCompatibility = 1.8 // 设置jdk版本
// webAppDirName = 'webapp' // 设置 WebApp 根目录 默认为"src/webapp"
// 设置 Java 源码所在目录
//sourceSets {
// main {
// java {
// srcDir 'src'
// }
// resources {
// srcDir 'resources'
// }
// }
//}
repositories {
mavenCentral()
}
dependencies {
compile "org.springframework:spring-web:4.3.10.RELEASE"
testCompile group: 'junit', name: 'junit', version: '4.11'
testCompile group: 'junit', name: 'junit', version: '4.12'
}
//tasks <<{
// println webAppDirName
//}
war {
// 对war包的设置, 最后生成war包的名字。 默认为 setting.gradle里的name +version
baseName = "pictureTest1"
}
2.问题解决: upload放错位置,改目录结构!
首先学习下maven工程标准目录结构:
// maven工程标准目录结构:
|-src
|-main
|–bin //脚本库
|–java //java源代码文件
|–resources //资源库,会自动复制到classes目录里
|–filters //资源过滤文件
|–assembly //组件的描述配置(如何打包)
|–config //配置文件
|–webapp //web应用的目录。WEB-INF、css、js等
|-test
|–java //单元测试java源代码文件
|–resources //测试需要用的资源库
|–filters //测试资源过滤库
|-site //Site(一些文档)
|-target
|-LICENSE.txt //Project’s license
|-README.txt //Project’s readme
target是有存放项目构建后的文件和目录,jar包、war包、编译的class文件等。
target里的所有内容都是maven构建的时候生成的
因此:
upload文件夹应该放在 web-app下,而不是resource目录下.
web-app是 打war包的根目录。首先是会按照这个目录的结构下去压缩,然后才会去添加 java、resourses里的文件!
即我的项目目录结构应该是:
|-pom.xml
|-src
|-main
|-java
|-resources
|-web-app
|-upload
|-index.jsp
|-WEB-INF
|-web.xml
总结参考:
MAVEN 工程打包resources目录外的更多资源文件
http://blog.csdn.net/u012849872/article/details/51035938
上一篇: 图的深度优先搜索和广度优先搜索