今天在项目中因为需要引入一个开源框架,所以就从网上下载了该开源框架包并直接从桌面复制到了IDEA项目中。一番修改后重启项目,发现该框架并未工作,然后在前端debug发现刚复制的这个框架的所有html、js、css都访问不到,报了404错误。然后又重启了项目,发现还是一样访问不到。最后想着是直接复制粘贴的文件没来得及发布到maven的target文件夹中,执行了一下项目的maven clean操作,删除target文件夹,然后再重启项目,重新编译生成target文件夹,然后就可以访问到框架文件了。
target文件夹
这里首先说下target文件夹的作用:是用来存放项目编译后的文件和目录。包括jar包、war包、编译的class文件、静态文件(html、jsp、JavaScript、css以及配置文件等)。每当你启动项目时,就会把你项目的src(源代码文件)发布到target文件夹中。这里的发布简单点说就是:
- 把所有的src中的java文件编译成class文件放到target的classes文件夹中,同时把resources文件夹下的配置文件copy过去
- 把pom.xml中的依赖jar包放到target的lib文件夹中(WEB-INF下)
- 把src中所有的静态资源(webapp下的所有文件)直接复制一份拷贝到target中
编译过来的class文件会被jvm加载到内存中,而你所访问到的静态资源都是target文件夹下的,并不是你src文件夹中的。本人测试修改target文件夹下的一个静态文件(没修改src下的文件),页面刷新之后显示了修改的效果,所以证实项目确实访问的是target文件夹。估计当时idea发布的时候并没有把新添加的静态文件发布到target中,具体原因不得而知,如果以后有时间再去深究。
maven操作
既然提到了maven的操作,就顺便写在这里吧,为那些跟我一样的新手节约点时间。
- mvn compile:
编译,将Java 源程序编译成 class 字节码文件,还顺带把resources文件夹下的配置文件 copy到了classes文件夹下。
- mvn test: 测试,执行你项目的test文件夹下的测试类,并生成测试报告。
- mvn clean:
将以前编译得到的旧的class
字节码文件删除。Idea下是将整个target文件夹删除。
- mvn pakage: 打包,动态 web工程打 war包,Java工程打 jar 包。
- mvn install: 将项目生成 jar 包放在仓库中,以便别的模块调用。以后如果你其它项目要用到这个项目中的java文件,可以这 样操作。