Maven的相关标签

Maven的相关标签

Maven项目的标准目录结构

  • src
    • main
      • java 源文件
      • resources 资源文件
      • filters 资源过滤文件
      • config 配置文件
      • scripts 脚本文件
      • webapp web应用文件
    • test
      • java 测试源文件
      • resources 测试资源文件
      • filters 测试资源过滤文件
    • it 集成测试
    • assembly assembly descriptors
    • site Site
  • target
    • generated-sources
    • classes
    • generated-test-sources
    • test-classes
    • xxx.jar
  • pom.xml
  • LICENSE.txt
  • NOTICE.txt
  • README.txt

构建Maven项目的时候,如果没有进行特殊的配置,Maven会按照标准的目录结构查找和处理各种类型文件。

src/main/java和src/test/java

这两个目录中的所有*.java文件会分别在comiletest-comiple阶段被编译,编译结果分别放到了target/classestarge/test-classes目录中,但是这两个目录中的其他文件都会被忽略掉。

src/main/resoucessrc/test/resources

这两个目录中的文件也会分别被复制到target/classes和target/test-classes目录中。

target/classes

打包插件默认会把这个目录中的所有内容打入到jar包或者war包中。

资源文件

.xml、.properties等资源文件是Java代码中要使用的文件。代码在执行的时候会到指定位置去查找这些文件。

前面已经说了Maven默认的处理方式,默认情况下,编译时,只会将src/main/resoucessrc/test/resources这两个目录中的文件分别被复制到target/classes和target/test-classes目录中。

但有时候有些资源配置文件通常与.java文件一起放在src/main/java目录(如mybatishibernate的表映射文件)。有的时候还希望把其他目录中的资源也复制到classes目录中。这些情况下就需要在Pom.xml文件中修改配置了。、

可以有两种方法另外访问资源

  • 一是在build元素下添加resources进行配置。
  • 另一种是在buildplugins子元素中配置maven-resources-plugin等处理资源文件的插件。

在build标签下添加resource子标签

resource用来将配置资源文件,将其他目录下的资源文件复制到target/classes目录中。

<build>
		...
		<resources>
			<resource>
				<directory>src/main/resources</directory>
			</resource>
			<resource>
				<directory>src/main/java</directory>
				<excludes>
					<exclude>**/*.java</exclude>
				</excludes>
			</resource>
			<resource>
				<directory>src/main/webapp</directory>
			</resource>
		</resources>
<build>

采用maven-resources-plugin插件

<plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.5</version>
    <executions>
        <execution>
            <id>copy-xmls</id>
            <phase>process-sources</phase>
            <goals>
                <goal>copy-resources</goal>
            </goals>
            <configuration>
                <outputDirectory>
                   	/target/classes
                </outputDirectory>
                <resources>
                    <resource>
                        <directory>
                            /src/main/java
                        </directory>
                        <includes>
                             <include>
                             	**/*.xml
                        	 </include>
                        </includes>
                <excludes>
					<exclude>
						**/*.java
					</exclude>
				</excludes>
                    </resource>
                 </resources>
             </configuration>
         </execution>
     </executions>
</plugin>

采用builder-helper-maven-plugin插件

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>3.0.0</version>
       <executions>
          <execution>
            <id>add-source</id>
            <phase>generate-sources</phase>
            <goals>
              <goal>add-source</goal>
            </goals>
            <configuration>
               <sources>
                  <source>some directory</source>
                //示例如下
                  <source>
                  		src/java/main
                  </source>
                  <source>
                  		../usermng-api/src/main/java
                  </source>
               </sources>
            </configuration>
          </execution>
       </executions>
</plugin>

打包时文件相关的配置

打包时target/classes目录中的资源文件会和class字节码一起被打进jar包或war包中。有时候默认的情况不能完全满足需求,如target/classes目录中的一些文件不希望打入jar包中,就需要额外配置maven-jar-pluginmaven-war-plugin插件。

<plugin> 
	<groupId>org.apache.maven.plugins</groupId> 				
	<artifactId>maven-war-plugin</artifactId> 					
	<version>2.2</version> 
	<configuration>  
		<outputDirectory>
			vms-start/target
		</outputDirectory>  		 
		<packagingExcludes>
			WEB-INF\classes\static\**,
			WEB-INF\classes\huiPro\**,
			WEB-INF\classes\WEB-INF\**,
			WEB-INF\classes\index.html,
			WEB-INF\classes\script\**,
			WEB-INF\classes\skin\**
		</packagingExcludes> 
	</configuration>
</plugin>

如果在打包时未指定具体输出目录,则会在工程根目录下输出打好的war包或jar包。

maven -package,-install, -deploy

package命令完成了项目编译、单元测试、打包功能,但没有把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库。

install命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库,但没有布署到远程maven私服仓库。

deploy命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值