Maven 编译打包(java+scala)项目 单独的Java项目 的Pom和assembly的配置

原创 2018年04月16日 15:35:33

第一个是单独的java项目的pom文件的配置

  <!-- 配置打包的方式 -->
    <build>
        <!--打包前的各种source定义-->
        <sourceDirectory>src/main/java</sourceDirectory>
        <resources>
            <!-- 把src/main/resources目录下所有的文件拷贝到conf目录中 -->
            <resource>
                <directory>src/main/resources</directory>
                <targetPath>${project.build.directory}/conf</targetPath>
            </resource>
            <!-- 把lib目录下所有的文件拷贝到lib目录中(可能有些jar包没有办法在maven中找到,需要放在lib目录中) -->
            <resource>
                <directory>lib</directory>
                <targetPath>${project.build.directory}/lib</targetPath>
            </resource>
            <!-- 把放在根目录下的脚本文件.sh,.bat拷贝到bin目录中 -->
            <resource>
                <directory>src/main/script</directory>
                <includes>
                    <include>*.sh</include>
                    <include>*.bat</include>
                </includes>
                <targetPath>${project.build.directory}/bin</targetPath>
            </resource>
        </resources>

        <!-- 所有的plugins -->
        <plugins>
            <!-- 1.用于编译的plugin -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <fork>true</fork>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>


            <!-- 2.用于生成jar包的plugin -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.6</version>
                <configuration>
                    <!-- 把生成的jar包放在lib目录下(和其他所有jar包一起) -->
                    <outputDirectory>${project.build.directory}/lib</outputDirectory>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>lib/</classpathPrefix>
                        </manifest>
                    </archive>
                    <excludes>
                        <!-- 排除掉一些文件,不要放到jar包中,
                        这里是为了排除掉src/main/resources中的文件(它们应该放到conf目录)
                        这里只能指定要排除的目标文件,而不能指定源文件,虽然不够完美,但是基本能达到目的。 -->
                        <exclude>*.xml</exclude>
                        <exclude>*.properties</exclude>
                    </excludes>
                </configuration>
            </plugin>

            <!-- 3.用于拷贝maven依赖(lib)的plugin -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>2.10</version>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <!-- 把依赖的所有maven jar包拷贝到lib目录中(这样所有的jar包都在lib目录中) -->
                            <outputDirectory>${project.build.directory}/lib</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <!-- 4.用于拷贝resource文件夹 的plugin -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.7</version>
                <configuration>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>

            <!-- 5.配置生成源代码jar的plugin[这里的源代码是指java文件,不是class文件]-->
            <plugin>
                <artifactId>maven-source-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <attach>true</attach>
                    <!-- 配置源代码jar文件的存放路径,和其他jar文件一起放在lib目录 -->
                    <outputDirectory>${project.build.directory}/lib</outputDirectory>
                </configuration>
                <executions>
                    <execution>
                        <phase>compile</phase>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <!-- 6.配置生成javaDoc.jar的plugin一般不需要-->
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>2.10.2</version>
                <configuration>
                    <aggregate>true</aggregate>
                </configuration>
                <executions>
                    <execution>
                        <id>attach-javadocs</id>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>


第二个项目(Java+scala)项目

第一步: 在Project Structure中 Modules下Sources中 将src/main/scala和src/main/java两个文件夹下标记为Sources

第二步:增加pom 这个pom中包含scala的依赖包和build中增加了scala的编译(比第一个项目build中多了一个scala的编译插件)

必须增加scala的依赖包 不然编译会出错。

第三部 : 在src/main/assembly 下增加assembly.xml  这里会在项目的Target下生成一个tar.gz的包

assembly.xml的配置

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
    <id>bin</id>
    <formats>
        <format>tar.gz</format>
        <format>dir</format>
    </formats>
    <dependencySets>
        <dependencySet>
            <useProjectArtifact>true</useProjectArtifact>
            <outputDirectory>lib</outputDirectory>
         </dependencySet>
    </dependencySets>
    <fileSets>
        <fileSet>
            <outputDirectory>/</outputDirectory>
            <includes>
                <include>README.txt</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>src/main/scripts</directory>
            <outputDirectory>/bin</outputDirectory>
            <fileMode>0777</fileMode>
        </fileSet>
        <fileSet>
            <directory>src/main/resources</directory>
            <outputDirectory>/config</outputDirectory>
            <excludes>
                <exclude>base.conf</exclude>
            </excludes>
            <fileMode>0644</fileMode>
        </fileSet>
    </fileSets>
</assembly>

pom的配置


 <dependencies>

        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>23.0</version>
        </dependency>
      
#################################这几个是scala编译需要的依赖包##################################      
  <dependency>
            <groupId>org.scala-lang</groupId>
            <artifactId>scala-library</artifactId>
            <version>2.12.1</version>
        </dependency>
        <dependency>
            <groupId>org.scala-lang</groupId>
            <artifactId>scala-compiler</artifactId>
            <version>2.12.1</version>
        </dependency>
        <dependency>
            <groupId>org.scala-lang</groupId>
            <artifactId>scala-reflect</artifactId>
            <version>2.12.1</version>
        </dependency>
        <dependency>
            <groupId>org.scala-lang</groupId>
            <artifactId>scala-actors</artifactId>
            <version>2.11.8</version>
        </dependency>
        <dependency>
            <groupId>org.scala-tools</groupId>
            <artifactId>maven-scala-plugin</artifactId>
            <version>2.15.2</version>
        </dependency>
    </dependencies>

    <!-- 配置打包的方式 -->
    <build>
        <!--打包前的各种source定义-->
        <sourceDirectory>src/main/</sourceDirectory>
        <resources>
            <!-- 把src/main/resources目录下所有的文件拷贝到conf目录中 -->
            <resource>
                <directory>src/main/resources</directory>
                <targetPath>${project.build.directory}/conf</targetPath>
            </resource>
            <!-- 把lib目录下所有的文件拷贝到lib目录中(可能有些jar包没有办法在maven中找到,需要放在lib目录中) -->
            <resource>
                <directory>lib</directory>
                <targetPath>${project.build.directory}/lib</targetPath>
            </resource>
            <!-- 把放在根目录下的脚本文件.sh,.bat拷贝到bin目录中 -->
            <resource>
                <directory>src/main/script</directory>
                <includes>
                    <include>*.sh</include>
                    <include>*.bat</include>
                </includes>
                <targetPath>${project.build.directory}/bin</targetPath>
            </resource>
        </resources>

        <!-- 所有的plugins -->
        <plugins>
            <!-- 0.maven-assembly-plugin  assembly 插件 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <descriptors>
                        <descriptor>src/main/assembly/assembly.xml</descriptor>
                    </descriptors>
                    <archive>
                        <manifest>
                            <mainClass/>
                        </manifest>
                    </archive>
                </configuration>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <!-- 1.用于编译的plugin  java -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <fork>true</fork>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>

            <plugin>
                <!-- 1.1 这是个编译scala代码的 scala-->
                <groupId>net.alchim31.maven</groupId>
                <artifactId>scala-maven-plugin</artifactId>
                <version>3.2.1</version>
                <executions>
                    <execution>
                        <id>scala-compile-first</id>
                        <phase>process-resources</phase>
                        <goals>
                            <goal>add-source</goal>
                            <goal>compile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <!-- 2.用于生成jar包的plugin -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.6</version>
                <configuration>
                    <!-- 把生成的jar包放在lib目录下(和其他所有jar包一起) -->
                    <outputDirectory>${project.build.directory}/lib</outputDirectory>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>lib/</classpathPrefix>
                        </manifest>
                    </archive>
                    <excludes>
                        <!-- 排除掉一些文件,不要放到jar包中,
                        这里是为了排除掉src/main/resources中的文件(它们应该放到conf目录)
                        这里只能指定要排除的目标文件,而不能指定源文件,虽然不够完美,但是基本能达到目的。 -->
                        <exclude>*.xml</exclude>
                        <exclude>*.properties</exclude>
                    </excludes>
                </configuration>
            </plugin>

            <!-- 3.用于拷贝maven依赖(lib)的plugin -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>2.10</version>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <!-- 把依赖的所有maven jar包拷贝到lib目录中(这样所有的jar包都在lib目录中) -->
                            <outputDirectory>${project.build.directory}/lib</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <!-- 4.用于拷贝resource文件夹 的plugin -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.7</version>
                <configuration>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>

            <!-- 5.配置生成源代码jar的plugin[这里的源代码是指java文件,不是class文件]-->
            <plugin>
                <artifactId>maven-source-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <attach>true</attach>
                    <!-- 配置源代码jar文件的存放路径,和其他jar文件一起放在lib目录 -->
                    <outputDirectory>${project.build.directory}/lib</outputDirectory>
                </configuration>
                <executions>
                    <execution>
                        <phase>compile</phase>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>


版权声明: https://blog.csdn.net/mengxpFighting/article/details/79961206

maven父子项目使用assembly插件打包

1、使用assembly打包,当发布项目时,需要将程序的jar包、依赖的jar包、运行脚本、配置文件等一起发布,就需要使用maven的assembly插件,将项目发布为zip包或tar.gz包,网上介...
  • yingkongshi99
  • yingkongshi99
  • 2016年06月05日 19:06
  • 7567

Maven Assembly Plugin示例

修改Maven配置文件pom.xml,在构建过程中添加Assembly插件,并将该插件的single目标绑定至Maven 的package阶段,之后添加Assembly插件自己的配置文件,Assemb...
  • a19881029
  • a19881029
  • 2016年03月16日 15:58
  • 3413

maven项目继承和聚合pom文件配置

Maven:项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具,maven因为自定义依赖包可以从本质上避免大项目时候可能涉及到的jar包污染。pom.xml文...
  • yang1464657625
  • yang1464657625
  • 2017年03月03日 12:05
  • 964

java项目中利用maven打war包,其pom配置

1.8 4.1.6.RELEASE 5.1.30 XXX ${project.basedir}/src/main/resources true ...
  • hgg923
  • hgg923
  • 2016年10月13日 09:35
  • 9569

maven assembly 配置详解

(1)、在pom.xml 文件里面的配置说明 maven-assembly-plugin make-zip ...
  • zlgydx
  • zlgydx
  • 2016年03月28日 13:49
  • 12058

Maven assembly打包文件被覆盖问题

Maven的assembly插件使用:最近在做一个小工程,利用java启动运行。为了简单方便使用运行,利用maven的assembly将需要使用的jar都打包到一个jar中。这样无论拷贝到哪里,只有运...
  • zlfprogram
  • zlfprogram
  • 2017年07月01日 15:56
  • 2507

Maven项目pom.xml配置详解

maven项目pom.xml文件配置详解,需要时可以用作参考:
  • Rongbo_J
  • Rongbo_J
  • 2015年11月29日 22:42
  • 2191

web 项目搭建 maven 中pom.xml

首先在eclispe中配置自己的 maven 、 maven 配置文件(镜像和代理) 、meven仓库 阿里镜像地址 http://maven.aliyun.com/nexus/content...
  • qq_16605855
  • qq_16605855
  • 2017年06月23日 08:51
  • 939

Maven学习总结(27)——Maven自定义打包插件maven-assembly-plugin详解

Assembly插件会生成 “assemblies”, 此特性等同于的Maven 1 distribution plug-in.。该插件不仅支持创建二进制归档文件,也支持创建源码归档文件。这些asse...
  • u012562943
  • u012562943
  • 2016年10月31日 10:46
  • 3408

maven创建ssm框架的pom.xml文件配置

这里主要注意的是部署到本地,按照以下pom.xml配置后,run as maven build,填写tomcat7:run。 等到出现 就代表运行成功了,再在浏览器中输入项目所对应的代码就可以...
  • fc103171
  • fc103171
  • 2017年07月18日 17:43
  • 3461
收藏助手
不良信息举报
您举报文章:Maven 编译打包(java+scala)项目 单独的Java项目 的Pom和assembly的配置
举报原因:
原因补充:

(最多只允许输入30个字)