maven打包时如何把配置文件(xml等)也放到classes目录里

首先,来看下MAVENx项目标准的目录结构:

一般情况下,我们用到的资源文件(各种xml,properites,xsd文件等)都放在src/main/resources下面,利用maven打包时,maven能把这些资源文件打包到相应的jar或者war里。

 

有时候,比如mybatis的mapper.xml文件,我们习惯把它和Mapper.java放一起,都在src/main/java下面,这样利用maven打包时,就需要修改pom.xml文件,来把mapper.xml文件一起打包进jar或者war里了,否则,这些文件不会被打包的。(maven认为src/main/java只是java的源代码路径)。网络上有很多方法,我大概试了下,几种方法都可以,可以任选一种即可。

 

方法1,其中**/*这样的写法,是为了保证各级子目录下的资源文件被打包。

xml代码

复制代码
<build>
    <finalName>test</finalName>
    <!--
    这样也可以把所有的xml文件,打包到相应位置。
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
                <include>**/*.tld</include>
            </includes>
            <filtering>false</filtering><--这里是false,用true会报 数据库连接 错误-->
        </resource>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
                <include>**/*.tld</include>
            </includes>
            <filtering>false</filtering>
        </resource>
    </resources>
</build>
复制代码

方法2,利用maven-resources-plugin插件,用此方法需要将所有配置文件全部放在resources目录下

复制代码
<build>
    ...
    </plugins>
        ...
        <!--
        此plugin可以用
        利用此plugin,把源代码中的xml文件,打包到相应位置,
        这里主要是为了打包Mybatis的mapper.xml文件 
        -->
        <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>${basedir}/target/classes</outputDirectory>
                        <resources>
                            <resource>
                                <directory>${basedir}/src/main/java</directory>
                                <includes>
                                    <include>**/*.xml</include>
                                </includes>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
            </executions>
        </plugin>      
    </plugins>     
</build>

或者这样简写
   <plugins>
            <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <version>3.0.2</version>
            </plugin>
        </plugins>

 补充:IDEA中,用macen-webapp模板创建的maven工程,pom文件里面自动添加了这个插件

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你使用Maven打包发现classes文件夹面没有文件,可能是因为你的Maven配置文件没有正确地指定编译源代码的目录。 你可以检查以下几个方面: 1. 确认你的源代码目录Maven的默认配置范围内。默认情况下,Maven将源代码放在src/main/java目录下,如果你的源代码不在这个目录下,你需要在pom.xml文件中配置相应的目录。 2. 检查Maven编译插件的配置。在pom.xml文件中,确保你使用的编译插件正确地配置了源代码目录和输出目录。例如,以下是一个基本的编译插件配置: ``` <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>1.8</source> <target>1.8</target> <compilerArgs> <arg>-Xlint:unchecked</arg> </compilerArgs> </configuration> </plugin> </plugins> </build> ``` 确保在该配置中,`<source>` 和 `<target>` 元素指定了正确的Java版本,`<source>` 和 `<target>` 元素指定了正确的Java版本,`<compilerArgs>` 元素指定了编译器选项。 3. 检查是否有其他插件覆盖了编译插件的配置。有些插件可能覆盖编译插件的默认配置,导致编译结果不符合预期。如果你使用了其他插件,确保它们没有修改编译插件的配置。 如果以上方法都没有解决问题,你可以尝试清理Maven的本地仓库并重新构建项目,或者使用其他打包方式,如使用IDEA或Eclipse进行打包

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值