精华内容
下载资源
问答
  • maven打包无法生成target目录

    千次阅读 2020-02-23 00:22:41
    自己springboot项目在执行和调试时候一直都有target目录,但是当打包的时候执行package竟然发现无法打包出jar文件,执行clean执行mvn package也无法生成target目录,更没有class文件,在找了以前项目build配置...

    自己的springboot项目在执行和调试的时候一直都有target目录,但是当打包的时候执行package竟然发现无法打包出jar文件,执行clean后执行mvn package也无法生成target目录,更没有class文件,在找了以前项目的build配置后,也没有办法;最后找了一圈后发现把pom改为jar可以成功编译;

    <packaging>jar</packaging>

     

    这里找了一下packaging属性的介绍:

    使用maven进行模块划分管理,一般都会有一个父级项目,pom文件除了GAV(groupId, artifactId, version)是必须要配置的,另一个重要的属性就是packaging打包类型,所有的父级项目的packaging都为pom,packaging默认是jar类型,如果不作配置,maven会将该项目打成jar包。作为父级项目,还有一个重要的属性,那就是modules,通过modules标签将项目的所有子项目引用进来,在build父级项目时,会根据子模块的相互依赖关系整理一个build顺序,然后依次build。

     最后看了自己以前的项目发现确实主项目是配置的<packaging>pom</packagin>,而子项目的pom里是没有<packagin>属性的,也就是使用的默认值jar;然后我把以前项目中的子项目加上<packaging>pom</packaging>,果然也同我这个项目一样无法打包了;

    [INFO] Scanning for projects...
    [INFO] 
    [INFO] ------------------------------------------------------------------------
    [INFO] Building bootfileshare 1.0-SNAPSHOT
    [INFO] ------------------------------------------------------------------------
    [INFO] 
    [INFO] --- spring-boot-maven-plugin:1.4.0.RELEASE:repackage (default) @ bootfileshare ---
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 1.639 s
    [INFO] Finished at: 2020-02-23T00:17:56+08:00
    [INFO] Final Memory: 17M/222M
    [INFO] ------------------------------------------------------------------------
    
    Process finished with exit code 0

    我这次创建的项目因为没有子项目,代码直接在主项目中写的,所以没有发现这个问题,百度了几分钟才解决;特此记录一下.

    展开全文
  • 使用maven打包后,在META-INF目录下会生成pom.properties文件(当然可以使其不生成)。这个文件包含了包Id信息,此外它最开始有两行注释,看起来是这样#Generated by Maven#Sat Jun 25 09:40:37 CST 2016第一行 是...

    使用maven打包后,在META-INF目录下会生成pom.properties文件(当然可以使其不生成)。这个文件包含了包的Id信息,此外它最开始有两行注释,看起来是这样的

    #Generated by Maven

    #Sat Jun 25 09:40:37 CST 2016

    第一行 是固定的,第二行是打包时候的时间戳。

    第二行的存在有一个严重的问题,就是我们完全不修改代码,然后两次打包由于时间戳不一样,导致生成的两个包不一样。如果你不在乎可能觉得没有什么,但是对于大型项目,代码没变包却不同导致不能进行增量部署。

    这个代码的出现是由于java.util.Properties类的store(Writer writer, String comments)方法中有一行

    bw.write("#" + new Date().toString());

    这个问题在困扰大家的同时,也困扰着Maven的开发者。与之相关的有两个issue:

    maven人员郁闷的说

    Oracle's implementation of store() does write the stupid new Date().toString()

    由于大家需求强烈,目前该特性据说已被修正。

    在今年5月21号提交的代码中,时间这一行注释被移除了:移除方法是把生成后的文件对行迭代,看到是注释就删除。

    Stupid hack: write the properties to a StringWriter,

    iterate with a BufferedReader and drop all comments,

    finall write real content to the target file.

    我们看一下中心库中的版本和时间:

    3.0.x版本最晚是4月份提交的,所以它不包含这个改动。3.1.x最早是6月份提交的,现在已经有两个小版本了,但是引用次数还是0.

    我们对比一下3.0和3.1中的代码。首先是3.0.2中的:

    75 private void createPropertiesFile( MavenSession session, Properties properties, File outputFile,

    76 boolean forceCreation )

    77 throws IOException

    78 {

    79 File outputDir = outputFile.getParentFile();

    80 if ( outputDir != null && !outputDir.isDirectory() && !outputDir.mkdirs() )

    81 {

    82 throw new IOException( "Failed to create directory: " + outputDir );

    83 }

    84 if ( !forceCreation && sameContents( properties, outputFile ) )

    85 {

    86 return;

    87 }

    88 OutputStream os = new FileOutputStream( outputFile );

    89 try

    90 {

    91 String createdBy = CREATED_BY_MAVEN;

    92 if ( session != null ) // can be null due to API backwards compatibility

    93 {

    94 String mavenVersion = session.getSystemProperties().getProperty( "maven.version" );

    95 if ( mavenVersion != null )

    96 {

    97 createdBy += " " + mavenVersion;

    98 }

    99 }

    100

    101 properties.store( os, createdBy );

    102 os.close(); // stream is flushed but not closed by Properties.store()

    103 os = null;

    104 }

    105 finally

    106 {

    107 IOUtil.close( os );

    108 }

    109 }

    下面是3.1.1的(左边是在文件内的行号):

    77 private void createPropertiesFile( MavenSession session, Properties properties, File outputFile,

    78 boolean forceCreation )

    79 throws IOException

    80 {

    81 File outputDir = outputFile.getParentFile();

    82 if ( outputDir != null && !outputDir.isDirectory() && !outputDir.mkdirs() )

    83 {

    84 throw new IOException( "Failed to create directory: " + outputDir );

    85 }

    86 if ( !forceCreation && sameContents( properties, outputFile ) )

    87 {

    88 return;

    89 }

    90 PrintWriter pw = new PrintWriter( outputFile, "ISO-8859-1" );

    91 try

    92 {

    93 String createdBy = CREATED_BY_MAVEN;

    94 if ( session != null ) // can be null due to API backwards compatibility

    95 {

    96 String mavenVersion = session.getSystemProperties().getProperty( "maven.version" );

    97 if ( mavenVersion != null )

    98 {

    99 createdBy += " " + mavenVersion;

    100 }

    101 }

    102

    103 StringWriter sw = new StringWriter();

    104 properties.store( sw, null );

    105

    106 BufferedReader r = new BufferedReader( new StringReader( sw.toString() ) );

    107

    108 pw.println( "#" + createdBy );

    109 String line;

    110 while ( ( line = r.readLine() ) != null )

    111 {

    112 if ( !line.startsWith( "#" ) )

    113 {

    114 pw.println( line );

    115 }

    116 }

    117

    118 r.close();

    119 r = null;

    120 sw.close();

    121 sw = null;

    122 pw.close();

    123 pw = null;

    124 }

    125 finally

    126 {

    127 IOUtil.close( pw );

    128 }

    129 }

    这里主要是对注释的处理,正文内容的处理在方法public void createPomProperties()中。

    下面版本比上面多了一个流程,就是临时变量sw写入后,再逐行读出来,不是注释就写入pw中(迭代前已经把maven信息写好了)。这样就把时间删掉了。

    展开全文
  • 问题引出运行maven打包命令或直接运行程序时报错,提示resource下某个...-DskipTests参数是用于跳过所有测试检查打包后生成的target目录,将打包后的jar(或者war)解压查看,确定根目录下是否存在引用不到的资源jar中...

    问题引出

    运行maven打包命令或直接运行程序时报错,提示resource下某个配置文件找不到(甚至可能是某个文件夹下的所有配置),但是该文件在项目中是存在的

    解决思路

    1. 直接运行maven打包命令:
    mvn package -DskipTests
    

    -DskipTests参数是用于跳过所有测试

    1. 检查打包后生成的target目录,将打包后的jar(或者war)解压查看,确定根目录下是否存在引用不到的资源
    2. jar中确实没有资源文件,那么这就是问题所在了,maven未能将resource下所有的资源文件打入包中
    3. 对pom文件进行配置
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <!--包含文件夹以及子文件夹下所有资源-->
                    <include>**/*.*</include>
                </includes>
            </resource>
        </resources>
    </build>
    
    
    

    3c2b7f541222c56d6d9490c2879d72d9.png
    1. 重新打包再检查
    mvn clean
    mvn package -DskipTests
    maven未将resource下所有文件打包www.jianshu.com
    ae25ee477dd7dbcadab168415d21be0e.png
    展开全文
  • 使用maven打包springboot项目打包后运行发现启动报错找不到数据库配置或者配置文件压根并没有生效 打开jar包里检查发现根本就没有自己写配置文件..这问题就是在使用maven打包时pom里缺少配置 具体在pom配置文件中...

    使用maven打包springboot项目 打包后运行发现 启动报错找不到数据库配置或者 配置文件压根并没有生效  打开jar包里检查 发现根本就没有自己写的配置文件..这问题就是在使用maven打包时 pom里缺少配置

    具体在pom配置文件中按需要加上下边配置即可

    <!--设置对应生成的xml文件路径??-->
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.xml</include>
            </includes>
        </resource>
        <!--设置自己目录下的配置文件-->
        <resource>
          <!--下方resources的文件夹名字要和自己项目的文件夹名确认一致才行 很多人就是忽略了名字不一致 -->
            <directory>src/main/resources</directory>
            <includes>
                <include>**/*</include>
            </includes>
        </resource>
    </resources>
    

    pom里 resources的文件夹名字要和自己项目的文件夹名确认一致才行 很多人就是忽略了名字不一致

     

    展开全文
  • 一个java项目通过maven自动下载依赖时,会涉级读取三个配置文件,分别是项目下pom.xml 文件 、用户家目录下.m2/settings.xml 与 maven 全局配置settings.xml ,后面两者不难理解,就像linux下用户一样,有一...
  • 使用maven打包后,在META-INF目录下会生成pom.properties文件(当然可以使其不生成)。这个文件包含了包Id信息,此外它最开始有两行注释,看起来是这样 #Generated by Maven #Sat Jun 25 09:40:37 CST 2016 第一...
  • 打包“这个词听起来比较土,比较正式的说法应该是”构建项目软件包“,具体说就是将项目中的各种文件,比如源代码、编译生成的字节码、配置文件、文档,按照规范的格式生成归档,最常见的当然就是JAR包和WAR包了,...
  • maven工程打包后,为了区分,每次都是手动根据当前日期时间修改文件名,今天才知道可以在pom.xml文件进行配置,打包时候可以自动生成带时间戳文件名 第一步 在pom.xmlproperties中添加日期格式 第二步 在...
  • Maven打包

    2018-01-22 19:25:58
    1、clean:清空生成的文件 2、compile:编译 3、package:获取编译的代码,并按照可发布的格式进行打包,例如 JAR、WAR或者EAR文件。 4、install:安装工程包到本地仓库中,该仓库可以作为本地其他工程的依赖。  ...
  • 使用工具:eclipse 问题描述: 项目-->...Goals( package )后生成的.war文件内无.xml文件 解决办法: pom.xml文件中增加配置如下即可解决该问题。 <build> <resources> ...
  • Maven 打包

    千次阅读 2016-01-02 10:37:07
    打包“这个词听起来比较土,比较正式的说法应该是”构建项目软件包“,具体说就是将项目中的各种文件,比如源代码、编译生成的字节码、配置文件、文档,按照规范的格式生成归档,最常见的当然就是JAR包和WAR包了,...
  • 打包后的文件在windows上直接双击就可以运行,很方便。  但是这样做也有缺点:  1.运行时没有界面,需要停止程序时不太好办(可以从任务管理器直接结束,但是多个这样的程序同时运行时无法从进程名称上区分)。 ...
  • maven打包的技巧

    2016-01-14 22:33:38
    打包“这个词听起来比较土,比较正式的说法应该是”构建项目软件包“,具体说就是将项目中的各种文件,比如源代码、编译生成的字节码、配置文件、文档,按照规范的格式生成归档,最常见的当然就是JAR包和WAR包了,...
  • maven打包命令

    千次阅读 2019-02-19 00:22:55
    打包步骤是:清除,打包 一般的maven项目打包命令是:mvn clean package mvn clean 打包前清理掉之前有过打包的文件夹target ...package完成,会自动生成一个target文件,根据你编写pom打包命令和assemb...
  • Maven 打包的技巧

    2013-03-17 15:46:00
    打包“这个词听起来比较土,比较正式的说法应该是”构建项目软件包“,具体说就是将项目中的各种文件,比如源代码、编译生成的字节码、配置文件、文档,按照规范的格式生成归档,最常见的当然就是JAR包和WAR包了,...
  • 如果不同配置文件过多,粗心打包后,就会导致配置文件出错,从而使项目部署出问题。例如Mysql配置文件在项目中有可能会使用如下情况,通过手动注释切换配置文件。#本地数据库 #url:jdbc:mysql://*** #username:dev...
  • 今日手贱,一个project我觉得名称不规范然后改了下名,修改了.iml 文件 挖了个大坑 表象为tomcat 启动加载不了项目代码了 ,重建了tomcat 重建了module 最后说说解决办法吧 重新导入pom.xml 第二步 第三步 就这么...
  • maven打包后缀

    2017-12-27 11:34:50
    【技术贴】Maven打包文件增加时间后缀   构建war包,或者jar包,时候,maven会自动增加一个版本号和时间放在jar包后面比如poi-3.9-20131115.jar这样子,但是我自己打war包,总是给我生成一个快照后缀...
  • maven 打包1

    2016-09-01 18:02:02
    打包“这个词听起来比较土,比较正式的说法应该是”构建项目软件包“,具体说就是将项目中的各种文件,比如源代码、编译生成的字节码、配置文件、文档,按照规范的格式生成归档,最常见的当然就是JAR包和WAR包了,...
  • 打包“这个词听起来比较土,比较正式的说法应该是”构建项目软件包“,具体说就是将项目中的各种文件,比如源代码、编译生成的字节码、配置文件、文档,按照规范的格式生成归档,最常见的当然就是JAR包和WAR包了,...
  • 首先在pom.xml文件中指定war的打包方式,war 然后在pom文件的plugins节点下面增加如下内容即可mvn package时同时生成war, jar包。为了 mvn package install, mvn package deploy能够同时部署jar包,我们增加了...
  • spring boot maven打包部署

    千次阅读 2018-05-28 17:07:27
    spring boot项目中有内嵌的tomcat,使用maven打包可执行的jar文件去部署项目,直接运行生成的jar文件就可以了。生成jar进入项目目录下:执行 mvn clean package运行成功,打开项目的target文件夹,有文件生成把...
  • spring boot 用maven 打包

    2019-06-04 14:12:54
    SpringBoot 用maven 打包 命令 mvn package appassembler:assemble 成功生成一个jar包 和一个class文件,class文件中有一个APP文件夹,可以用 java -jar xx.jar 或者 app/bin下 .bat文件启动运行。 ...
  • 构建war包,或者jar包,时候,maven会自动增加一个版本号和时间放在jar包后面比如poi-3.9-20131115.jar这样子,但是我自己打war包,总是给我生成一个快照后缀report-0.0.1-SNAPSHOT.war这个样子,所以我想干掉这...
  • 对程序点击运行后,进行编译打包成target文件的内容和原web程序java对比 ...对于项目运行不是web工程本身,是项目编译并打包后生成target结果。 所以在寻找项目中文件路径时候 ,是找编译后路径。 ...
  • 手动生成webwar源码文件。mvn archetype:generate -DgroupId=com.companyname.automobile -DartifactId=trucks -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false将生成文件夹trucks 然后将...
  • Eclipse平台下Maven打包

    2017-10-11 10:24:40
    图中标注(3)为版本号,当修改了版本号再提交到maven仓库,会生成新版本项目文件,其他项目引用可以根据版本号来区分引用。图中标注(4)为打包方式 图中为pom文件的打包代码 图中显示是pom文件的复...

空空如也

空空如也

1 2 3 4 5 ... 17
收藏数 334
精华内容 133
关键字:

maven打包后生成的文件