欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

 

相关标签: maven gradle