精华内容
下载资源
问答
  • Maven打包,包含第三方依赖失败目标 1. 将依赖第三方jar包都打进去2. 将工程java 目录下所有文件夹和配置文件,包括资源文件都打入jar包,根据目录来3. 打出jar文件可直接运行方法:采用 maven-assembly-plugin环境:...

    Maven打包,包含第三方依赖失败

    目标 1. 将依赖第三方jar包都打进去2. 将工程java 目录下所有文件夹和配置文件,包括资源文件都打入jar包,根据目录来3. 打出jar文件可直接运行方法:采用 maven-assembly-plugin环境:IDEA 14.1.5 JDK 1.8其中**/*写法,是为了保证各级子目录下的资源文件被打包,svn相关文件排除。

    pom.xml 写法src/main/java**/***/.svn/*falseorg.apache.maven.pluginsmaven-compiler-plugin2.3.21.8

    java maven 打包怎么只带部分依赖

    addClasspath>javamaven-war-pluginorg.apache;artifactId>goals>copy-dependenciesmainClass>com.xx;outputDirectory>/artifactId>encoding>build>maven打包的时候有些jar包是不在mavencenter的。

    需要在pom中引入相关的本地jar包;execution>copyexecution>maven-jar-plugin/source>1.5&lt.apache.maven.pluginsUTF-8&lt。

    当然也是可以打包其他的文件的,诸如xml,properties等的;systemPath>/artifactId>org;manifest>/configuration>configuration>true&lt,可以使用plugin,默认将lib下的所有jar文件打包到WEB-INF/lib下.ik-analyzerplugin>artifactId>dependency>configuration>phase>installsystemorg.apache;/plugin>maven-dependency-plugin1.5/goal>version>2.3/archive>configuration>/configuration>/addClasspath>${project;warName>lib/WEB-INF/lib**/*.jar;groupId>ik-analyzermaven-compiler-pluginsourceDirectory>src/main/outputDirectory>${project.build.directory}3;/scope>${project;artifactId>

    maven provided jar 包也会打进去怎么解决

    注意scope标签,compile和runtime两种依赖打包时会打进去,provided、system、test都不会打进去。

    如果不想打包时将依赖包含进去,可以按实际情况选择后面的方式。

    maven本身引用时,在没有打包前,这些jar都是存储在maven的repository里面给所有项目共享的,这也是maven的目标之一。

    如下图,请看jar包的路径。

    用maven打包jar项目其中很多模块引用了相同jar包,如何把它些jar公...

    注意scope标签,compile和runtime两种依赖打包时会打进去,provided、system、test都不会打进去。

    如果不想打包时将依赖包含进去,可以按实际情况选择后面的方式。

    maven本身引用时,在没有打包前,这些jar都是存储在maven的repository里面给所有项目共享的,这也是maven的目标之一。

    如下图,请看jar包的路径。

    Maven依赖管理的jar文件在打包后可部署文件中的位置?

    使用maven-assembly-plugin,配合assembly.xml:org.apache.maven.pluginsmaven-assembly-plugin2.4truefalsesrc/main/assembly/assembly.xmltruejp.co.nec.nhm.df.entrance.Entrancemake-assemblypackageassembly

    怎么使用maven package命令

    此命令包含一系列过程:validate-->compile-->test-->package;Maven根据pom文件里packaging的配置,决定是生成jar文件还是war文件,并放到target目录下。

    (注:此命令需要在项目的根目录(也就是pom.xml文件所在的目录)下运行,Maven才知道打包哪个项目。

    )如何用maven打包可执行的jar方法一:将项目及所依赖的所有jar包打包成一个jar。

    1、pom.xml添加assembly插件 2、执行mvn assembly:assembly3、生成如文件4、执行java -jar quickstart-1.0.0-jar-with-dependencies.jar 备注:第2步的命令也可以改成mvn package,但需要更改pom.xml:方法二:将项目依赖的jar复制到一个目录中并在MANIFEST文件中添加Class-Path和Main-Class。

    1、在pom.xml中添加jar和dependency插件 2、执行mvn package 3、生成文件4、执行java -jar quickstart-1.0.0.jar...

    maven activebydefault不生效怎么办

    1.Java-maven异常-cannot be cast to javax.servlet.Filter 报错tomcat 启动后先将tomcat/lib目录下的jar包全部读入内存,如果webapps目录里的应用程序中WEB-INF/lib目录下有相同的包,将无法加载,报错的Filter实现了javax.servlet.Filter接口,Filter是在servlet-api.jar里。

    解决这个问题的方法就是对于servlet-ap.jar 使用 标签,编译的时候用到servlet-api和jsp-api,但在打包的时候不用这两个依赖。

    javax.servletservlet-api2.5provided中,它主要管理依赖的部署。

    目前可以使用5个值:* compile,缺省值,适用于所有阶段,会随着项目一起发布。

    * provided,类似compile,期望JDK、容器或使用者会提供这个依赖。

    如servlet.jar。

    * runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。

    * test,只在测试时使用,用于编译和运行测试代码。

    不会随项目发布。

    *system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。

    解决SpringBoot 不继承父 parent 打包不包含依赖的问题

    创建两个项目1. cdai_codebase_parent:其他项目的Maven配置都继承这个项目中pom.xml的定义。

    2. cdai_codebase_ssh:一个SSH示例项目,继承parent项目中的配置。

    首先看cdai_codebase_parent中pom.xml的内容:通过将packaging属性定义为pom来说明当前pom.xml是用来被继承的。

    之后在parent的pom.xml中,我们可以定义一些统一的版本号(Spring等第三方包的),依赖项(所有项目都会用的JUnit),以及通用的打包配置等。

    现在,我们就可以在cdai_codebase_ssh中,通过项目的相对路径引用这个parent的pom.xml文件了。

    附:在父pom.xml中dependencyManagement中定义需要被继承的依赖,然后在子pom.xml中可以直接指定groupId和artifactId来引入,就不需要版本号了。

    展开全文
  • maven 打包指定不同环境的配置文件

    千次阅读 2019-01-10 20:22:52
    -- 是否替换@xx@表示的maven properties属性值 --> <filtering>true <include>application-${profile.active}.properties <include>application.properties <id>local ...

     

    <build>
    		<!-- profile对资源的操作 -->
    		<resources>
    			<resource>
    				<directory>src/main/resources</directory>
    				<excludes>
    					<exclude>application*.properties</exclude>
    				</excludes>
    			</resource>
    			<resource>
    				<directory>src/main/resources</directory>
    				<!-- 是否替换@xx@表示的maven properties属性值 -->
    				<filtering>true</filtering>
    				<includes>
    				    <include>application-${profile.active}.properties</include>
    					<include>application.properties</include>
    				</includes>
    			</resource>
    		</resources>
    </build>
    <profiles>
    		<profile>
    			<id>local</id>
    			<properties>
    				<profile.active>local</profile.active>
    			</properties>
    			
    		</profile>
    		<profile>
    			<id>dev</id>
    			<properties>
    				<profile.active>dev</profile.active>
    			</properties>
    			
    		</profile>
    		<profile>
    			<id>test</id>
    			<properties>
    				<profile.active>test</profile.active>
    			</properties>
    			<activation>
    				<activeByDefault>true</activeByDefault>
    			</activation>
    		</profile>
    		<profile>
    			<id>online</id>
    			<properties>
    				<profile.active>online</profile.active>
    			</properties>
    		</profile>
    	</profiles>

     

    展开全文
  • Apache Maven 一个由Java 语言编写的包管理工具。可以帮助我们管理,分析项目依赖。...配置Maven环境变量。输入 mvn -h 检查是否安装成功。如下所示,即表示安装成功。2 Maven 命令Maven通过命令驱动自身...

    Apache Maven 一个由Java 语言编写的包管理工具。可以帮助我们管理,分析项目依赖。以及构建工程。


    1 Maven 的安装

    可以直接参考Apache Maven 安装 的指导,安装过程比较简单。首先要把Jdk 安装好。其次是以下几个步骤

    1. 下载,解压maven。
    2. 配置Maven环境变量。
    3. 输入 mvn -h 检查是否安装成功。如下所示,即表示安装成功。

    b4a97228f49facbcdb6849c86e41d475.png

    2 Maven 命令

    Maven通过命令驱动自身工作。

    常用的Maven命令如下:

    命令说明
    mvn clean清理Maven 项目。会删除目标路径(一般是target目录)Maven生成的打包文件,编译文件。
    mvn package打包Maven项目,会生成jar 或者war文件。
    mvn test执行test目录下的测试用例。
    mvn deploy发布依赖到远端
    mvn site生成项目相关的信息
    mvn archetype创建Maven 项目
    mvn tomcat:run运行在Tomcat容器
    mvn install安装依赖
    1. mvn archetype 创建项目

    archetype翻译过来就是典型,就是项目模版。

    Maven 拥有众多类型的archetype

    5bb830f1b16d0befb4dcf45de1814855.png
    mvn archetype:create

    执行mvn archetype:create 有以下三个参数

    参数说明
    -DgroupId项目的包名,比如 com.main.test
    -DartifactId项目的名称,比如 MavenTest
    -DarchetypeArtifactId项目的模版名称,
    比如上图的 maven-archetype-weapp
    mvn archetype:generate

    mvn archetype:generate 是 mvn archetype:create 的便捷版本.执行后 只需要根据项目 来选择,最后即可生成Maven项目。

    4e7c7665a8c96be20f2979851f8dcfae.png

    可以看到Maven 默认使用的archetype 是maven-archetype-quickstart。

    接下来,我们使用我们创建的项目,来讲解Maven项目的构成。

    3 Maven 项目构成

    cd3606338321a0fb3bc899090e75d745.png

    接下来再使用mvn archetype:generate创建一个Maven Web 项目。

    003f07489e3e23a83138ff3d35316ed0.png

    可以看到,Maven 的标准项目中存在src/main/java和src/main/test文件夹。默认的web项目中是不存在的,但是我们依然可以通过手动创建的方式,为其创建这两个文件夹。

    Maven 不仅仅是一个包管理工具,更是一个项目结构的规范标杆。遵守既定的标准,会使项目便于维护,降低开发成本。

    2f3dd0e1799e16e32d8671c80d8ae75c.png

    Pom.xml

    通过观察Maven的项目,会发现每一个项目中都存在一个pom.xml。这个xml 文件 其实就是Maven项目的配置文件。通过它 可以管理项目的依赖,依赖仓库,活动文件,构建,Maven模块的聚合,以及项目信息的配置等等。

    接下来,我们分别讲解Pom 文件在Maven中的应用。

    1. 依赖配置
    <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
        </dependency>
     </dependencies>
    </dependencyManagement>

    依赖dependencies,即依赖模块,内部由多个dependency,即依赖的具体内容。

    dependency内部有groupId,artifactId,version ,scope组成了Maven的坐标,根据坐标可以在仓库中找到一个唯一的包。

    对于 Scope 有必要做一下解释,

    Scope 指定了依赖的 作用范围 ,默认是compile。并且具有传递性。

    Scope 有以下选择test,compile,runntime,provided,system 五个。

    Scope说明
    test只有和test相关的编译和运行才参与进来。
    compile完整的参与maven 的生命周期。
    runtime跳过了compile阶段。
    provided没有这个包的时候,才参与进来。跳过了package阶段。
    system指示Maven 只在systemPath指定的路径下寻找包。

    在dependencies的上层还有一个标签dependencyManagement。一般是聚合模块的时候 在跟模块下使用,其他的子模块在引入包的时候都是引入的根模块的依赖。只有根模块不存的时候 才会去自己去根据坐标寻找依赖。

    2. 活动文件

    <profiles>
      <profile>
        <id>dev</id>
        <activation>
          <activeByDefault>true</activeByDefault>
        </activation>
        <build>
          <filters>
            <filter>../env/dev.properties</filter>
          </filters>
        </build>
      </profile>
    </profiles>

    活动文件的主要作用是 在执行mav package 的时候通过 -P 参数来指定活动的配置。

    mav package -P dev

    执行后 就会选择 dev节点下的配置,从dev中过滤出dev.properties来使用。

    Maven的标签都可以在profile内部 复写。

    3. 构建

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-deploy-plugin</artifactId>
                    <version>3.0.0-M1</version>
                </plugin>
                <!-- compiler 插件 -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.7.0</version>
                    <configuration>
                        <source>${maven.compiler.version}</source>
                        <target>${maven.compiler.version}</target>
                        <encoding>${project.build.sourceEncoding}</encoding>
                    </configuration>
                </plugin>
                <!-- war 包插件 -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>3.2.1</version>
                </plugin>
                <!-- 测试插件(默认情况下,surefire会执行文件名以Test开头或结尾的测试用例,或者是以TestCase结尾的测试用例)-->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.21.0</version>
                    <configuration><!-- 测试选项配置 -->
                        <skipTests>true</skipTests><!-- 默认跳过测试执行(可以直接通过"mvn test" 执行) -->
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    
        <!-- 源文件目录(可以被执行环境变量替换) -->
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>WEB-INF</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>

    build节点内主要是可以指定resources资源 和 plugin。比如compiler 和 war插件,可以自己选择指定的插件,如果你需要打包jar 就需要jar打包插件。同样的如果使用了pluginManagement那么子模块会跟随根模块使用一样的插件。

    mvn package

    执行Maven 的构建,并按照<packaging>war</packaging>所指定的方式进行打包。

    Maven 会帮我们执行clean,resource,compile,test,war这个几个插件的工作。最后生成war包。

    4 Maven的生命周期和基本原理

    1. Maven的生命周期

    Maven 有三个生命周期clean、default 和 site。

    生命周期说明
    clean执行清理相关的时候会触发该生命周期。比如mvn clean
    default构建项目
    site建立项目站点

    clean 周期组成:

    阶段说明
    pre-clean清理前
    clean执行清理
    post-clean清理后

    default 周期组成:

    阶段说明
    validate验证项目是否村存在 mvn validate 触发
    initialize初始化阶段
    compile编译项目中的源代码 mvn compile 触发
    test-compile编译项目中的测试源代码 mvn test 触发
    test执行test用例 mvn test 触发
    package编译资源打包,jar或者 war mvn package 触发
    verify检验包是否完好 mvn varify 触发
    install安装打包好的资源到本地仓库 mvn install 触发
    deploy发布包到远程仓库。mvn deploy 触发

    以上阶段自上而下,比如执行mvn validate就只会执行validate阶段。而执行mvn deploy 会执行

    validate到deploy的所有阶段。

    site 周期组成:

    阶段说明
    pre-site生成站点文档前
    site生成站点文档
    post-site生成站点文档后
    site-deploy发布站点

    2. Maven的基本原理

    4bbf2383ca1828426c5aad1d3826fcba.png

    我们借助IDEA来观察Maven,发现他只有三个组成部分。

    • Lifecycle
    • Plugins
    • Dependencies

    对于Lifecycle(生命周期)上边已经展示过了。而Plugins正是对应了,在不同的生命周期执行具体动作的插件。Dependencies 就是项目的依赖包。

    也就是说 我们在执行mvn clean 这个命令的时候,触发了Maven生命周期的clean周期,在这个周期内clean插件来帮我们执行了清理动作。

    Maven 是一个插件执行框架。通过插件在不同的时期,做不同的事情。我们把不同的时期,总结为Maven的生命周期,而做不同事情的本体就是插件。

    书写尚未完成,将持续更新。

    展开全文
  • 解决这个问题的方式有很多,我这里挑选了一个个人比较喜欢的方案,通过 maven profile 打包的时候按照部署环境打包不同的配置,下面说下具体的操作 配置不同环境的配置文件 建立对应的环境目录,我这里有三个环境...

    背景

    最近换了个新公司接手了一个老项目,然后比较坑的是这个公司的项目都没有没有做多环境打包配置,每次发布一个环境都要手动的去修改配置文件。今天正好有空就来配置下。

    解决这个问题的方式有很多,我这里挑选了一个个人比较喜欢的方案,通过 maven profile 打包的时候按照部署环境打包不同的配置,下面说下具体的操作

    配置不同环境的配置文件

    建立对应的环境目录,我这里有三个环境分别是,dev/test/pro 对应 开发/测试/生产。建好目录后将相应的配置文件放到对应的环境目录中、

     

     

    配置 pom.xml 设置 profile

    这里通过 activeByDefault 将开发环境设置为默认环境。如果你是用 idea 开发的话,在右侧 maven projects > Profiles 可以勾选对应的环境。

    <profiles>
        <profile>
            <!-- 本地开发环境 -->
            <id>dev</id>
            <properties>
                <profiles.active>dev</profiles.active>
            </properties>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <profile>
            <!-- 测试环境 -->
            <id>test</id>
            <properties>
                <profiles.active>test</profiles.active>
            </properties>
        </profile>
        <profile>
            <!-- 生产环境 -->
            <id>pro</id>
            <properties>
                <profiles.active>pro</profiles.active>
            </properties>
        </profile>
    </profiles>
    
     

     

    打包时根据环境选择配置目录

    这个项目比较坑,他把配置文件放到了webapps/config下面。所以这里打包排除 dev/test/pro 这三个目录时候,不能使用exclude去排除,在尝试用 warSourceExcludes 可以成功。之前还试过 packagingExcludes 也没有生效,查了下资料发现 packagingExcludes maven 主要是用来过滤 jar 包的。

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>3.1.0</version>
        <configuration>
            <warSourceExcludes>
                config/test/**,config/pro/**,config/dev/**
            </warSourceExcludes>
            <webResources>
                <resource>
                    <directory>src/main/webapp/config/${profiles.active}</directory>
                    <targetPath>config</targetPath>
                    <filtering>true</filtering>
                </resource>
            </webResources>
        </configuration>
    </plugin>

     

    最后根据环境打包

    ## 开发环境打包
    mvn clean package -P dev
    
    ## 测试环境打包
    mvn clean package -P test
    
    ## 生产环境打包
    mvn clean package -P pro

    执行完后发现 dev 目录下的文件已经打包到 config下

     

    启动项目

    我在启动项目的时候,死活启动不了。后来对比了前后的 target 目录发现子项目的 jar 包有些差异,经过多次尝试后。将所有子项目下 target 项目重新删除 install 最后成功启动。

    展开全文
  • jar pom.xml <!-- 指定文件id --> <profiles> <profile> <id>alpha</id> <properties> <deploy.type>alpha<...
  • maven 打包不同环境

    2018-02-28 17:19:00
    支持不同环境打包 1 pom添加如下配置: 1)添加指定打包id 区分各个环境 <profiles> <profile> <id>dev</id> <properties> ...
  • idea中maven项目指定环境打包方法

    千次阅读 2019-06-26 09:21:04
    方法一:命令 在idea命令行输入:mvn clean package -DskipTests -Pproduct/dev/test(根据打包需要选择不同环境) 方法一:可视化按钮
  • 一般在我们项目开发过程中,会针对不同的环境来配置多个文件,为了在我们使用的时候,便于部署,提高效率,减少出错,便于维护。 dev环境:开发环境,主要针对本地开发使用,用于需求开发,BUG修改,本地调试使用。...
  •  在实际的项目开发中,我们往往需要根据不同的环境进行打包资源,打测试环境的包时需要加入测试环境的配置文件,比如数据库的连接信息等等,打生产环境的包时,需要将生产环境的配置文件打进包内。我们可以人工来...
  • 主要介绍了使用maven profile指定配置文件打包适用多环境的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 当前案例中包含一整套的代码和word文档,非常适合新手... 主要是通过maven打包加载不同环境的properties文件 然后将对于的属性绑定到指定的实体对象中;然后通过调用接口可以看到加载不同环境控制台打印的内容是不一样的
  • 1.指定环境 mvn clean package -P dev 打包测试环境 2.跳过javadoc 有的时候因为jdk版本的原因,我们在打包的时候会遇到报错,例如: 我这边推荐使用命令处理: mvn clean package -Dmaven.javadoc.skip=true...
  • 以下是如何不频繁修改配置文件, 随时打包不同基础数据配置信息(打包的其中一种,我感觉是比较方便的) 1.在pom.xml中添加 profiles节点信息如下: &lt;profiles&gt; &lt;profile&gt; &lt;!...
  • 开发过程, 我们习惯把数据源配置, ...如何不频繁修改配置文件, 随时打包不同基础数据配置信息的项目.1.新建maven项目, 在pom.xml中添加 profile节点信息如下:devdevelopmenttruetesttestprevpreviewprodproduction2....
  • maven 打包

    2018-09-23 18:12:04
    maven打包配置,将资源文件提取出来,在打包命令-P之后指定环境资源文件,替换配置文件中的占位符${xxxx} 方法如下: 首先需要引入maven-assembly-plugin,如上图所示   接下来在pom文件中配置 在build中...
  • Maven打包

    2020-03-19 15:01:40
    指定settings.xml文件打包 mvn clean package --settings C:\WORKSOFTS\apache-maven-3.3.9\conf\settings.xml -Dmaven.test.skip=true 跳过测试打包 ...指定环境打包 mvn clean package -Denv=...
  • hdu 5643 King&&num;39&semi;s Game 约瑟夫变形首先约瑟夫问题的数学推理过程:我们知道第一个人(编号一定是(m-1) mod n) 出列之后,剩下的n-1个人组成了一个新的约瑟夫环(以编号为k=m mod n的人开始):k k...
  • 1、创建指定目录 src/main/resources/uat 目录下properties是验证环境的配置文件 src/main/resources/prd目录下properties是生产环境的配置文件 2、pom.xml内配置profiles <profiles> <!-- ...
  • 开发过程, 我们习惯把数据源配置, 项目常量, 日志...如何不频繁修改配置文件, 随时打包不同基础数据配置信息的项目. 1.新建maven项目, 在pom.xml中添加 profile节点信息如下: dev development
  • 最近在项目中使用springboot时发现,采用在pom中定义不同的profile,并且maven打包时 采用-P参数并不能替换我application.properties文件中指定占位符的问题。 配置文件布局: 在application....
  • -- 资源根目录排除各环境的配置,防止在生成目录中多余其它目录 --> <exclude>conf/afk/* <exclude>conf/animal/* <exclude>conf/mj/* <directory>src/main/resources/conf/${profiles.active} ...
  • 打包命令 这里我们指定配置文件问test 这个是在pom.xml里面定义的, 里面有test,production和devlop三个定义 在不同环境使用Jenkins的时候,-P后面加上不同的参数 我这里是测试环境,所以我这里是-Ptest ...
  • ​ 在使用IDEA开发项目的时候经常会遇到使用Maven打包项目(打成jar包或者zip包),但是之前不太清楚打包插件的使用,有时候会遇到在启动jar包的时候没有指定主类的错误(dd-1.0-SNAPSHOT.jar中没有主清单属性)。...

空空如也

空空如也

1 2 3 4 5 ... 18
收藏数 347
精华内容 138
关键字:

maven打包指定环境