当前位置: 首页>编程语言>正文

maven聚合工程排除父工程的依赖包 maven父工程打包pom

工程目录结构:

工程根目录

        ---_parent

        ---main

        ---utils

maven聚合工程排除父工程的依赖包 maven父工程打包pom,maven聚合工程排除父工程的依赖包 maven父工程打包pom_eureka,第1张

父工程pom.xml

<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">
  	<!-- 模型版本。maven2.0必须是这样写,现在是maven2唯一支持的版本 -->  
  	<modelVersion>4.0.0</modelVersion>      
		<!-- 公司或者组织的唯一标志,并且配置时生成的路径也是由此生成, 如work.dzsoft,maven会将该项目打成的jar包放本地路径:/work/dzsoft/ --> 
  	<groupId>work.dzsoft</groupId>     
		<!-- 本项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的 --> 
  	<artifactId>fuzidemo</artifactId>    
		<!-- 本项目目前所处的版本号 --> 
  	<version>0.0.1-SNAPSHOT</version>       
		<!-- 打包的机制,如pom,jar, maven-plugin, ejb, war, ear, rar, par,默认为jar -->  
  	<packaging>pom</packaging>              
		<!--项目的名称, Maven产生的文档用 -->
  	<name>fuzidemo</name>                
		<!--项目主页的URL, Maven产生的文档用 -->
  	<url>http://maven.apache.org</url>      
		<!--子模块列表-->
  	<modules>
  		<module>../utils</module>
  		<module>../main</module>
    </modules>
  	
  	<!--项目开发者属性-->
    <properties>
    	<!-- 文件拷贝时的编码,设置为UTF-8 -->                                               
    	<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
				<!-- 为了确定每个框架的版本号,锁定版本 -->
				<parent-version>0.0.1-SNAPSHOT</parent-version>
				<fastjson.version>1.2.73</fastjson.version>
        <poi.version>3.17</poi.version>
        <ganymed.version>262</ganymed.version>
  	</properties>

		<!-- dependencyManagement 只是声明依赖,并不实现引入,子模块引入时不需要指定版本号 -->	
    <dependencyManagement>     
			<dependencies>
				<dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>${fastjson.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <!--<version>3.17</version>-->
            <version>${poi.version}</version>
        </dependency>
        <dependency>
          <groupId>ch.ethz.ganymed</groupId>
          <artifactId>ganymed-ssh2</artifactId>
          <version>${ganymed.version}</version>
      	</dependency>
      	<dependency>
          <groupId>work.dzsoft</groupId>
          <artifactId>utils</artifactId>
          <version>${parent-version}</version>
      </dependency>
        <!--
        <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts2-core</artifactId>
            <version>${struts2.version}</version>
        	<exclusions>//排除依赖
            	<exclusion>
                	<artifactId>javassist</artifactId>     
                	<groupId>javassist</groupId>
            	</exclusion>
        	</exclusions>
        </dependency>
        -->
			</dependencies>
    </dependencyManagement>

  	<!-- dependencies 子项目中全部继承父工程中这里声明的依赖,子项目无需引入 -->
  	<dependencies>
			<dependency>
			  	<groupId>junit</groupId>
			  	<artifactId>junit</artifactId>
			  	<version>4.12</version>
			  	<scope>test</scope>
			</dependency>
			<dependency>
          <groupId>commons-lang</groupId>
          <artifactId>commons-lang</artifactId>
          <version>2.6</version>
      </dependency>
		</dependencies>
  	<!--构建项目需要的信息--> 
    <build>   
    	<!--产生的构件的文件名-->
     	<finalName>${artifactId}-${version}</finalName>  
     	<!--这个元素描述了项目相关的所有资源路径列表,例如和项目相关的属性文件,这些资源被包含在最终的打包文件里。--> 
     	<!--这个元素描述了项目相关或测试相关的所有资源路径-->  
     	<resources>                   
 	    	<resource>
 	    		<!--描述存放资源的目录,该路径相对POM路径-->                                       
					<directory>src/main/resources</directory>
					<!--是否使用参数值代替参数名。参数值取自properties元素或者文件里配置的属性,文件在filters元素里列出。-->
          <filtering>true</filtering>  
				</resource>
                <!--打包包含源码,注释后打包则不包含源码-->
				<resource>
	     		<directory>src/main/java</directory>
					<filtering>false</filtering>
				</resource>
			</resources>
    	
    	       
    	<pluginManagement>  <!-- 编译Java代码插件 --> 
        	<plugins>       <!--使用的插件列表 。--> 
          	<plugin>    <!--设置编译版本为1.8-->
              	<groupId>org.apache.maven.plugins</groupId>    <!--插件在仓库里的group ID-->
              	<artifactId>maven-compiler-plugin</artifactId> <!--插件在仓库里的artifact ID--> 
              	<version>3.7.0</version>
              	<configuration>            <!--扩展配置项-->
                  	<source>1.8</source>
                  	<target>1.8</target>
                  	<encoding>UTF-8</encoding>
                  	<showWarnings>true</showWarnings>
             		</configuration>
          	</plugin>
		        <plugin>    <!-- skip test -->
							<groupId>org.apache.maven.plugins</groupId>
								<artifactId>maven-surefire-plugin</artifactId>
								<configuration>
									<skip>false</skip>
									<testFailureIgnore>true</testFailureIgnore>
								</configuration>
						</plugin>
				</plugins>
    	</pluginManagement>
  	</build>
</project>

子项目1 pom.xml

<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">
	<parent>
      <!--被继承的父项目的构件标识符 -->
  		<artifactId>fuzidemo</artifactId>
      <!--被继承的父项目的全球唯一标识符 -->
      <groupId>work.dzsoft</groupId>
      <!--被继承的父项目的版本 -->
      <version>0.0.1-SNAPSHOT</version>
      <!-- 父项目的pom.xml文件的相对路径。相对路径允许你选择一个不同的路径。默认值是../pom.xml。Maven首先在构建当前项目的地方寻找父项 
          目的pom,其次在文件系统的这个位置(relativePath位置),然后在本地仓库,最后在远程仓库寻找父项目的pom。 -->
      <relativePath>../_parent/pom.xml</relativePath>
  </parent>
  <modelVersion>4.0.0</modelVersion>
  <groupId>work.dzsoft</groupId>
  <artifactId>utils</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>
  <dependencies>
      <dependency>
          <groupId>ch.ethz.ganymed</groupId>
          <artifactId>ganymed-ssh2</artifactId>
      </dependency>
  </dependencies>
</project>

子项目2 pom.xml

<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">
	<parent>
      <!--被继承的父项目的构件标识符 -->
  		<artifactId>fuzidemo</artifactId>
      <!--被继承的父项目的全球唯一标识符 -->
      <groupId>work.dzsoft</groupId>
      <!--被继承的父项目的版本 -->
      <version>0.0.1-SNAPSHOT</version>
      <!-- 父项目的pom.xml文件的相对路径。相对路径允许你选择一个不同的路径。默认值是../pom.xml。Maven首先在构建当前项目的地方寻找父项 
          目的pom,其次在文件系统的这个位置(relativePath位置),然后在本地仓库,最后在远程仓库寻找父项目的pom。 -->
      <relativePath>../_parent/pom.xml</relativePath>
  </parent>
  <modelVersion>4.0.0</modelVersion>
  <groupId>work.dzsoft</groupId>
  <artifactId>main</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>
  <dependencies>
      <dependency>
          <groupId>com.alibaba</groupId>
          <artifactId>fastjson</artifactId>
      </dependency>
      <!--引用其他子项目-->
      <dependency>
          <groupId>work.dzsoft</groupId>
          <artifactId>utils</artifactId>

      </dependency>
  </dependencies>
  <build>
    <plugins>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <appendAssemblyId>false</appendAssemblyId>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
                <archive>
                    <!-- 此处指定main方法入口的class -->
                    <manifest>
                        <mainClass>work.dzsoft.Main</mainClass>
                    </manifest>
                </archive>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>assembly</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
  </build>
</project>

项目打包

在_parent目录下执行命令

mvn clean compile package install

maven聚合工程排除父工程的依赖包 maven父工程打包pom,maven聚合工程排除父工程的依赖包 maven父工程打包pom_java_02,第2张

 出现下图表示打包成功

maven聚合工程排除父工程的依赖包 maven父工程打包pom,maven聚合工程排除父工程的依赖包 maven父工程打包pom_java_03,第3张

然后去每个子项目的target目录下可以看到打包后的jar文件


https://www.xamrdz.com/lan/5xu1941966.html

相关文章: