惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

有赞技术团队
有赞技术团队
美团技术团队
博客园 - 司徒正美
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
阮一峰的网络日志
阮一峰的网络日志
S
SegmentFault 最新的问题
博客园_首页
雷峰网
雷峰网
V
V2EX
The Cloudflare Blog
博客园 - 三生石上(FineUI控件)
量子位
Last Week in AI
Last Week in AI
人人都是产品经理
人人都是产品经理
爱范儿
爱范儿
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 聂微东
V
Visual Studio Blog
Hugging Face - Blog
Hugging Face - Blog
博客园 - 【当耐特】
Jina AI
Jina AI
月光博客
月光博客
L
LangChain Blog

克洛洛日记

一年回本计划 | 克洛洛日记 股票期权的Theta | 克洛洛日记 股票期权的Gamma | 克洛洛日记 股票期权的Delta | 克洛洛日记 KDJ指标 | 克洛洛日记 布林线 | 克洛洛日记 MACD指标 | 克洛洛日记 RSI指标 | 克洛洛日记 时间协议 | 克洛洛日记 聊聊Spring的stereotype注解 | 克洛洛日记 免费申请 JetBrains 全产品 License | 克洛洛日记 Aloha 一个Hexo主题 | 克洛洛日记 泰国之旅 [三] | 克洛洛日记 泰国之旅 [二] | 克洛洛日记 泰国之旅 [一] | 克洛洛日记 Nginx使用SSL证书配置https | 克洛洛日记 i18next | 克洛洛日记 错误排查:非ROOT用户使用密钥进行ssh登录提示输入密码 | 克洛洛日记 使用Github、Travis-CI和Coding.net自动部署博客[三] | 克洛洛日记 使用EditorConfig | 克洛洛日记 JavaScript执行window.print()打印内容为空白 | 克洛洛日记 使用Github、Travis-CI和Coding.net自动部署博客[二] | 克洛洛日记 寓食记 | 克洛洛日记 使用Github、Travis-CI和Coding.net自动部署博客[一] | 克洛洛日记 书单 | 克洛洛日记 WebJars使用示例 | 克洛洛日记 WebJars介绍 | 克洛洛日记 数据分布式模型 | 克洛洛日记 Wicket的HelloWorld | 克洛洛日记 Java运行时内存结构 | 克洛洛日记
Maven打jar包内容出错 | 克洛洛日记
海拉鲁球果 <hyrul · 2016-03-29 · via 克洛洛日记

· maven / java / jar / wicket

今天在使用maven打包时,发现打的jar包有问题。

第1种情况-无class文件

打的jar包没有内容(准确地说是没有class),猜想应该是maven打包的时候没有compile java源文件到class,从网上找原因,原来maven默认是compile src/main/java 下的java文件,而我们目录结构中的源码目录是 src/,需要在pom.xml里指定源码位置。

在pom.xml文件的 build > resources 前加入 ${basedir}/src ,如下:

<sourceDirectory>${basedir}/src</sourceDirectory>
<resources>
    <resource>
        <filtering>false</filtering>
        <directory>src/main/java</directory>
        <includes>
            <include>**</include>
        </includes>
        <excludes>
            <exclude>**/*.java</exclude>
        </excludes>
    </resource>
</resources>

打出的jar包内就有class了。

第2种情况-无资源文件

启动系统后,界面报错,提示找不到 html 资源文件。

由于使用的是Wicket,需要打入Component对应的html文件(这是Wicket的特点),界面提示找不到html文件,查找这个jar包的内容,发现没有html,再次回到 pom.xml 文件查看:

<sourceDirectory>${basedir}/src</sourceDirectory>
<resources>
    <resource>
        <filtering>false</filtering>
        <directory>src/main/java</directory>
        <includes>
            <include>**</include>
        </includes>
        <excludes>
            <exclude>**/*.java</exclude>
        </excludes>
    </resource>
</resources>

如上,resources > resource > directory 的内容是 src/main/java,改成 src 后再打的jar包就好了。

具体原因和第一个问题类似,这里的配置是将 resource (除了class等其他资源)打入jar包,而配置是只将 src/main/java 内的所有资源(除了java文件的文件)打入jar包,实际上我们所希望的是将 src/ 下的打入,改完后如下:

<sourceDirectory>${basedir}/src</sourceDirectory>
<resources>
    <resource>
        <filtering>false</filtering>
        <directory>src</directory>
        <includes>
            <include>**</include>
        </includes>
        <excludes>
            <exclude>**/*.java</exclude>
        </excludes>
    </resource>
</resources>

参考

pom.xml的上级配置(默认配置):https://maven.apache.org/guides/introduction/introduction-to-the-pom.html#Super_POM