精华内容
下载资源
问答
  • Mavenmaven项目的三种打包方式jar,pom,war Maven项目的打包类型有三种分别是:pom、jar、war。 jar:默认的打包方式打包成jar用作jar包使用。打包成jar用作jar包使用。 war:打包成war,发布在服务器...

    【Maven】maven项目的三种打包方式jar,pom,war

    • Maven项目的打包类型有三种分别是:pom、jar、war。

    • jar:默认的打包方式,打包成jar用作jar包使用。打包成jar用作jar包使用。
    • war:将会打包成war,发布在服务器上,如网站或服务。一般是java web项目打包。
    • pom:用在父级工程或聚合工程中,用来做jar包的版本控制,必须指明这个聚合工程的打包方式为pom。

    补充一下,jdk9 后还可以打包 jmod(Java 模块化),厉害的是这个通过 jlink 命令,可以直接将 jmod 打包为对应环境的可执行的程序,告别了让用户安装 jdk 的步骤,现在也有对应的 maven 插件了。


    • pom:打出来可以作为其他项目的maven依赖,在工程A中添加工程B的pom,A就可以使用B中的类。用在父级工程或聚合工程中。用来做jar包的版本控制。

    • jar包:通常是开发时要引用通用类,打成jar包便于存放管理。当你使用某些功能时就需要这些jar包的支持,需要导入jar包。

    • war包:是做好一个web网站后,打成war包部署到服务器。目的是节省资源,提供效率。


    项目中一般使用maven进行模块管理,每个模块下对应都有一个pom文件,pom文件维护了各个模块之间的依赖和继承关系。项目模块化可以将通用的部分抽离出来,方便重用;修改一部分代码不再是build整个项目,缩短了build时间;此外各模块都有自己的pom文件,结构更清晰。

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

    而对于各个子项目,需要在其对应的pom文件开头声明对父级项目的引用,通过GAV实现。对于子项目中自己的GAV配置,GV如果不配置,则会从父类项目的配置继承过来。子模块可以通过dependencies标签来添加自己的依赖,此外子类项目的packaging值只能是war或jar。如果是需要部署的项目,一般是包含controller的module,需要打包成war类型,如果只是内部调用或者是作服务使用,则推荐打成jar包,是服务于war包的, 位于war包中的lib文件夹下。

    展开全文
  • Maven 打包为可运行jar ,pom文件配置。 注意 在IDEA 运行是,相关配置文件会被打包到 \target\classes目录下,添加下面这个会使配置文件进入 指定的位置,而不是 \target\classes。会造成程序提示找不到 配置文件等...

    楔子

    Maven 打包为可运行jar ,pom文件配置。

    注意

    在IDEA 运行是,相关配置文件会被打包到 \target\classes目录下,添加下面这个会使配置文件进入
    指定的位置,而不是 \target\classes。会造成程序提示找不到 配置文件等。
    
    <!-- && 在IDE中运行要把这个给注释掉,因为IDEA打包 默认路劲是 classes ,有下面行会把配置文件转移到其他目录 -->
    <!--<targetPath>${project.build.directory}/config</targetPath>-->
    

    打包命令(第三方jar单独拷贝出来放在lib目录)

    mvn clean dependency:copy-dependencies -DoutputDirectory=target/lib package 
    

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
    		 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    	<modelVersion>4.0.0</modelVersion>
    
    	<groupId>com.zhuzi.camel</groupId>
    	<artifactId>camelStudy</artifactId>
    	<version>1.0-SNAPSHOT</version>
    
    	<properties>
    		<!-- 文件拷贝时的编码 -->
    		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    		<!-- 编译时的编码 -->
    		<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
    		<apache.common.version>2.8.0</apache.common.version>
    		<camel.version>2.23.0</camel.version>
    		<scala.version>2.11.12</scala.version>
    	</properties>
    
    	<dependencies>
    		<!-- Camel start -->
    		<dependency>
    			<groupId>junit</groupId>
    			<artifactId>junit</artifactId>
    			<version>4.12</version>
    			<scope>test</scope>
    		</dependency>
    		<dependency>
    			<groupId>org.apache.camel</groupId>
    			<artifactId>camel-core</artifactId>
    			<version>${camel.version}</version>
    		</dependency>
    	</dependencies>
    
    	<build>
    
    		<!-- 打包命令   -->
    		<!-- mvn clean dependency:copy-dependencies -DoutputDirectory=target/lib package  -->
    		<!--	<finalName>${artifactId}-${version}</finalName> 这是默认名 ,修改打包名称可以修改这个 -->
    		<!--<sourceDirectory>src/main/java</sourceDirectory>-->
    		<resources>
    
    			<!-- 解决打包时候Mapper.xml没进入 dao.class目录 (报错提示org.apache.ibatis.binding.BindingException: Invalid bound statement) -->
    			<resource>
    				<directory>src/main/java</directory>
    				<includes>
    					<include>**/*.xml</include>
    				</includes>
    			</resource>
    
    			<!-- 控制资源文件的拷贝 -->
    			<resource>
    				<directory>src/main/resources</directory>
    				<includes>
    					<include>**/*.properties</include>
    					<include>**/*.xml</include>
    					<include>**/**</include>
    				</includes>
    				<!--<filtering>false</filtering>-->
    				<!-- && 在IDE中运行要把这个给注释掉,因为IDEA打包 默认路劲是 classes ,有下面行会把配置文件转移到其他目录 -->
    				<!--<targetPath>${project.build.directory}/config</targetPath>-->
    			</resource>
    		</resources>
    		<pluginManagement>
    
    			<plugins>
    
    				<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    				<!--  拷贝依赖的jar到lib目录(如果不配置可以使用  如下命令 把 依赖的jar 拷贝出来) (虽然配置了,但是不知道为什么不生效) -->
    				<!-- mvn dependency:copy-dependencies -DoutputDirectory=target/lib -->
    				<plugin>
    					<groupId>org.apache.maven.plugins</groupId>
    					<artifactId>maven-dependency-plugin</artifactId>
    					<version>3.0.1</version>
    					<executions>
    						<execution>
    							<id>copy</id>
    							<phase>package</phase>
    							<goals>
    								<goal>copy-dependencies</goal>
    							</goals>
    
    							<configuration>
    								<outputDirectory>${project.build.directory}/lib</outputDirectory>
    								<overWriteReleases>false</overWriteReleases>
    								<overWriteSnapshots>false</overWriteSnapshots>
    								<overWriteIfNewer>true</overWriteIfNewer>
    								<includeScope>compile</includeScope><!-- 拷贝是排除test 的依赖  这部分可以参考https://liugang594.iteye.com/blog/2093082 -->
    							</configuration>
    						</execution>
    					</executions>
    				</plugin>
    				<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    				<!-- Step 1  设置编译版本  -->
    				<plugin>
    					<groupId>org.apache.maven.plugins</groupId>
    					<artifactId>maven-compiler-plugin</artifactId>
    					<version>3.2</version>
    					<!-- 编译时使用的JDK版本和UTF8编码 -->
    					<configuration>
    						<source>1.8</source>
    						<target>1.8</target>
    						<encoding>UTF-8</encoding>
    						<showWarnings>true</showWarnings>
    					</configuration>
    				</plugin>
    				<!-- Step 1 end  设置编译版本/end  -->
    
    				<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    				<!-- Step 2   打包jar文件时,配置manifest文件,加入lib包的jar依赖 -->
    				<plugin>
    					<groupId>org.apache.maven.plugins</groupId>
    					<artifactId>maven-jar-plugin</artifactId>
    					<version>3.0.2</version>
    					<configuration>
    						<archive>
    							<!-- 清单文件 -->
    							<manifest>
    								<mainClass>com.zhuzi.camel.App2</mainClass>
    								<addClasspath>true</addClasspath>
    								<useUniqueVersions>false</useUniqueVersions>
    								<classpathPrefix>lib/</classpathPrefix>
    							</manifest>
    
    							<!-- 给清单文件添加键值对(配置文件外置) -->
    							<manifestEntries>
    								<Class-Path>config/</Class-Path>
    							</manifestEntries>
    
    						</archive>
    					</configuration>
    				</plugin>
    
    
    				<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    				<!-- 解决资源文件的编码问题 -->
    				<plugin>
    					<groupId>org.apache.maven.plugins</groupId>
    					<artifactId>maven-resources-plugin</artifactId>
    					<version>3.1.0</version>
    					<configuration>
    						<encoding>${project.build.sourceEncoding}</encoding>
    					</configuration>
    				</plugin>
    
    				<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    				<!-- 下面这个配置了可以直接运行 执行命令如下(不配置为好) -->
    				<!-- mvn exec:exec -->
    				<plugin>
    					<groupId>org.codehaus.mojo</groupId>
    					<artifactId>exec-maven-plugin</artifactId>
    					<version>1.6.0</version>
    					<executions>
    						<execution>
    							<goals>
    								<goal>exec</goal>
    							</goals>
    						</execution>
    					</executions>
    					<configuration>
    						<executable>java</executable>
    						<arguments>
    							<argument>-classpath</argument>
    							<classpath>
    							</classpath>
    							<argument>com.zhuzi.camel.App2</argument>
    						</arguments>
    					</configuration>
    				</plugin>
    
    				<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    				<!-- 打包source文件为jar文件 -->
    				<plugin>
    					<groupId>org.apache.maven.plugins</groupId>
    					<artifactId>maven-source-plugin</artifactId>
    					<version>3.0.1</version>
    					<configuration>
    						<attach>true</attach>
    						<encoding>UTF-8</encoding>
    					</configuration>
    					<executions>
    						<execution>
    							<phase>compile</phase>
    							<goals>
    								<goal>jar</goal>
    							</goals>
    						</execution>
    					</executions>
    				</plugin>
    			</plugins>
    
    			<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    
    		</pluginManagement>
    	</build>
    	<repositories>
    		<repository>
    			<id>nexus-aliyun</id>
    			<name>Nexus aliyun</name>
    			<url>http://maven.aliyun.com/nexus/content/groups/public</url>
    			<releases>
    				<enabled>true</enabled>
    				<updatePolicy>always</updatePolicy>
    			</releases>
    			<snapshots>
    				<enabled>true</enabled>
    				<updatePolicy>always</updatePolicy>
    			</snapshots>
    		</repository>
    	</repositories>
    </project>
    

    其他博文

    [Maven]Maven构建可执行的jar包(包含依赖jar包)

    展开全文
  • maven手动打包pom文件配置

    千次阅读 2017-07-21 16:42:17
    在使用maven来管理项目时,项目除了web项目,还有可能控制台程序,一般用于开发一些后台服务的程序。最近在工作中也遇到了这种场景,在做定时任务...(1)手动打包maven工程pom文件配置:  4.0.0  com.bj58.opt

    在使用maven来管理项目时,项目除了web项目,还有可能为控制台程序,一般用于开发一些后台服务的程序。最近在工作中也遇到了这种场景,在做定时任务通常会编译jar包工程,部署运行,程序会依赖很多jar包,项目初始化时,只需要初始化主函数及运行相关程序

    使用方法:

    (1)手动打包maven工程pom文件配置:


    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.bj58.opt</groupId>
        <artifactId>com.bj58.opt.cron</artifactId>
        <version>5.0.0-SNAPSHOT</version>
        <!--packaging>war</packaging-->
        <name>jingzhun-cron</name>
        <distributionManagement>
            <repository>
                <id>releases</id>
                <name>Internal Releases</name>
                <url>http://10.58.120.19:8058/nexus/content/repositories/releases</url>
            </repository>
            <snapshotRepository>
                <id>Snapshots</id>
                <name>Internal Snapshots</name>
                <url>http://10.58.120.19:8058/nexus/content/repositories/snapshots</url>
            </snapshotRepository>
        </distributionManagement>


        <dependencies>
            <dependency>
                <groupId>com.bj58.opt.cpt</groupId>
                <artifactId>com.bj58.opt.cpt.contract</artifactId>
                <version>4.0.41</version>
            </dependency> 
        </dependencies>


        <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        </properties>
        
        <build>
            <finalName>jingzhun-cron</finalName>
        <plugins> 
                <plugin> 
                    <groupId>org.apache.maven.plugins</groupId> 
                    <artifactId>maven-assembly-plugin</artifactId> 
                    <version>2.2.1</version> 
                    <configuration> 
                        <descriptors> 
                            <descriptor>src/main/assembly.xml</descriptor> 
                        </descriptors>                  
                    </configuration> 
                    <executions> 
                        <execution> 
                            <id>make-assembly</id> 
                            <phase>package</phase> 
                            <goals> 
                                <goal>single</goal> 
                            </goals> 
                        </execution> 
                    </executions> 
                </plugin> 
                
            </plugins>
        </build>
    </project>


    (2)assembly.xml文件配置:


    <assembly> 
    <id>cron</id> 
    <formats> 
    <format>tar.gz</format> 
    </formats> 
    <dependencySets> 
    <dependencySet> 
    <useProjectArtifact>true</useProjectArtifact> 
    <outputDirectory>lib</outputDirectory>
    </dependencySet> 
    </dependencySets> 
    <fileSets> 
    <fileSet> 
    <outputDirectory>/bin</outputDirectory> 
    <directory>src/main/bin</directory> 
    <includes> 
    <include>**/*.*</include> 
    </includes> 
    </fileSet>
    <fileSet> 
    <outputDirectory>/config</outputDirectory> 
    <directory>src/main/config</directory> 
    <includes> 
    <include>**/*.*</include> 
    </includes> 
    </fileSet>
    <fileSet> 
    <outputDirectory>/conf</outputDirectory> 
    <directory>src/main/conf</directory> 
    <includes> 
    <include>**/*.*</include> 
    </includes> 
    </fileSet>
    </fileSets> 
    </assembly> 

    (3) maven install后最终的jar包结构为:(若想添加更多文件结构,可以修改assembly.xml文件配置)



    展开全文
  • Maven打包三种打包方式-jar,war,pom 1.默认jar打包方式 maven的默认打包方式,不需要设置packaging来指定。 使用情况:通常是工具类项目(common)和需要被其他项目依赖的项目,打成jar包 2.war 需要设置<...

    Maven的打包三种打包方式 jar,war,pom

    1.默认jar打包方式

    maven的默认打包方式,不需要设置packaging来指定。
    使用情况:通常是工具类项目(common)和需要被其他项目依赖的项目,打成jar包

    2.war

    需要设置<packaging>war<packaging>来打包成war包。
    使用情况:一般用于网站和服务发布到服务器上。

    3.pom

    需要设置<packaging>pom<packaging>打包成pom包
    使用情况:常用在微服务项目中,父级工程和聚合工程打包pom包,用于统一对子项目jar包进行版本控制。

    展开全文
  • idea maven pom打包配置

    千次阅读 2018-05-20 15:41:20
    &lt;build&gt; &lt;finalName&gt;ssmmvn&...--java下的配置文件打包--&gt; &lt;resource&gt; &lt;directory&gt;src/main/java&lt;/directory&am
  • 打包失败 Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.18.1:test 在pom文件新增下面内容
  • maven打包项目war包的pom.xml配置

    千次阅读 2018-10-23 14:46:50
    maven打包成war包的pom.xml配置(1)完整配置:这个是使用servlet的完整配置,其他的类似。 <project xmlns=...
  • pom.xml中的(若有)里面添加插件,没有就直接复制一下代码。 &lt;build&gt; &lt;plugins&gt; &lt;plugin&gt; &lt;groupId&gt;org.apache.maven.plugins&lt;/...
  • Maven项目打包为jar的几种方式

    万次阅读 多人点赞 2017-10-28 23:15:48
    Maven项目打包为jar的几种方式 这里收集整理下以往打包MAVEN项目JAR包的各种方式 直接打包,不打包依赖包 直接打包,不打包依赖包,仅打包出项目中的代码到JAR包中。在POM中添加如下plugin即可,随后执行...
  • maven 命令行打包 mvn -v, --show-version 现在最新的maven版本是 3.6,我这里用的还是 2017 年下载的 3.1.1 版本(虽然有点过时,但是大版本不变,指令基本一样) mvn -h, --help 使用 help 命令可以看到 maven...
  • 1. Idea自身打包方式 1.1创建Artifacts  快捷键(Ctrl+Alt+Shift+S)打开项目的Project Structure。在Artifacts创建    接着,指定main class,如下:    最后,得到创建得到的artifacts   1.2打包...
  • pom.xml中添加 <packaging>war</packaging>
  • 问题:在项目过程中,使用Maven多Module开发,会有版本号的管理问题,每次打包是否需要手动更新pom文件内所有的版本号呢? 问题描述: 父pompom 解决方案: 按照上面操作步骤下面命令按照需要填写好就能...
  • 1,bootstrap 和 application: 相同点:bootstrap 和 application 都是 springboot 的配置文件。 不同点: bootstrap 在 springboot 初始化过程就生效。 ...application 在 ...--修改打包方式为pom-->...
  • <groupId>org.apache.maven.plugins <artifactId>maven-assembly-plugin <mainClass>com.adsc.topologies.dehazing.DehazingTopology</mainClass> <descriptorRef>jar-with-dependencies ...
  • MavenPom文件打包配置build

    千次阅读 2017-09-18 16:41:07
    -- 打包source文件jar文件(源码,可选) --> <artifactId>maven-source-plugin <version>2.1 <attach>true <encoding>UTF-8 <phase>compile <goal>jar <id>A 路径/...
  • maven项目常用的打包方式

    万次阅读 2018-03-08 10:48:39
    一、无依赖其他任何jar<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId>
  • 针对maven构建的项目,我们可以通过配置pom文件,实现不同环境下包含不同的配置文件。 1.在pom.xml文件中增加如下内容,配置项目发布的环境有哪些 &lt;profiles&gt; &lt;profile&gt;...
  • springboot maven 打包的两种方式

    千次阅读 2019-08-23 17:01:28
    一、springboot maven...a、maven配置打包插件 <!--打包配置,执行mvn clean package--> <packaging>jar</packaging> <!--maven打war包依赖配置--> <!--<packaging>war<...
  • 打包WAR过程 首先对项目进行编译。然后执行以下步骤: 单击下图红色方框处  在IDEA右侧出现maven project选项  单击maven project选项,出现Spring MVC Basic Feature菜单,选择 其中的Lifecycle菜单项,展开,...
  • 啥扯到gitlab呢,因为jenkins构建用gitlab拉代码,那个2货建的项目,真牛,也不说他错,只是奇葩,一个外包公司,估计也没有你们考虑什么,但也是第一次见,gitlab项目进去的不是项目的根目录,而是某个目录下,...
  • 修改maven打包编码格式设置

    千次阅读 2019-07-01 10:51:59
    pom中添加如下设置即可: <properties> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <project.build.sourceEncoding>UTF-8</project.build....
  • JAR 包的关键字来搜索,下面直接贴图 ...以 spring-context-support-3.1.0.RELEASE.jar 例,上图中已经给出这个 jar 包的 groupId,artifactId,version信息, 手动安装的时候这些信息
  • Maven packaging打包类型

    千次阅读 2019-02-25 10:16:27
    Maven项目的常用的打包类型分为:pom、jar、war等类型 项目中一般使用maven进行模块管理,每个模块下对应都有一个pom文件,pom文件中维护了各模块之间的依赖和继承关系。项目模块化可以通用的部分抽离出来,方便...
  • 修改pom.xml <build> <!-- myapp改为文件名 --> <finalName>myapp</finalName> ... </build>
  • 今天我解决了一个maven打包的问题,这个打包的问题一直困扰了几天,我想把依赖包全部打入pom文件中,用maven把java的源码打入到jar的架包中,尝试了网上的几种方法并没有完全成功,后面我自己也做了一部分的探索今天...
  • Maven的三种打包方式

    2020-05-27 14:57:53
    必须指明这个聚合工程的打包方式为pom 现在有这样一个场景,有两个web项目A、B,一个java项目C,它们都需要用到同一个jar包:common.jar。如果分别在三个项目的pom文件中定义各自对common.jar的依赖,那么当common....
  • 一般来说,同一个项目一个pom文件即可,但是有时候本地测试时编译项目使用的pom...本地测试和打包指定不同的pom文件就可以很好的解决上面所讲的问题。因为项目开发中用的较多的还是本地测试,所以将pom.xml作为...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 37,041
精华内容 14,816
关键字:

maven将打包方式改为pom