问题:IDEA中打包插件,打出来的jar包一直是最原始的代码

问题详情:

        我在配置maven的分离式打包时,打出来的jar包运行不含有我新增的代码(一直都是旧的)


打包配置:

        pom.xml:

<!-- Maven Jar 插件配置 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>lib/</classpathPrefix>
                            <mainClass>io.metersphere.Application</mainClass>
                        </manifest>
                        <manifestEntries>
                            <!-- 添加资源文件的路径,这个必须要配置好,
                            不然程序运行时候找不到资源文件的位置 -->
                            <Class-Path>conf/</Class-Path>
                        </manifestEntries>
                    </archive>
                    <includes>
                        <include>io/**</include>
                        <include>META-INF/**</include>
                    </includes>
                </configuration>
            </plugin>



            <!-- Maven Assembly 插件配置 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <executions>
                    <execution>
                        <id>bin</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                        <configuration>
                            <descriptors>
                                <descriptor>../assemblies/bin.xml</descriptor>
                            </descriptors>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

bin.xml:


<assembly
        xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
    <!-- id 标识符,添加到生成文件名称的后缀符。如果指定 id 的话(这里指定的是项目的版本),目标文件则是 ${artifactId}-${id}.jar。【如terminal-dispatch-5.0.0.0.jar】 -->
    <id>bin</id>

    <!-- 指定打包格式。maven-assembly-plugin插件支持的打包格式有zip、tar、tar.gz (or tgz)、tar.bz2 (or tbz2)、jar、dir、war,可以同时指定多个打包格式 -->
    <formats>
        <format>tar.gz</format>
    </formats>
    <!-- 指定打的包是否包含打包层目录(比如finalName是terminal-dispatch,当值为true,所有文件被放在包内的terminal-dispatch目录下,否则直接放在包的根目录下)-->
    <includeBaseDirectory>false</includeBaseDirectory>
    <baseDirectory>devops-${project.version}</baseDirectory>


    <dependencySets>
        <dependencySet>
            <!--不使用项目的artifact,第三方jar不要解压,打包进zip文件的lib目录-->
            <useProjectArtifact>false</useProjectArtifact>
            <outputDirectory>lib</outputDirectory>
            <unpack>false</unpack>
        </dependencySet>
    </dependencySets>

    <!--	用来处理文件集合将其按照指定的方式输出-->
    <fileSets combine.children="append">

        <fileSet>
            <directory>src/main/resources/bin</directory>
            <outputDirectory>bin</outputDirectory>
            <fileMode>0755</fileMode>
        </fileSet>

        <fileSet>
            <directory>../../</directory>
            <outputDirectory>conf</outputDirectory>
            <fileMode>0755</fileMode>
            <includes>
                <include>Dockerfile</include>
                <include>Jenkinsfile</include>
                <include>LICENSE</include>
                <include>lombok.config</include>
                <include>mvnw</include>
                <include>mvnw.cmd</include>
                <include>OWNERS</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>../framework/sdk/src/main/resources</directory>
            <outputDirectory>conf</outputDirectory>
            <fileMode>0755</fileMode>
        </fileSet>
        <fileSet>
            <directory>../services/ui-test/src/main/resources</directory>
            <outputDirectory>conf</outputDirectory>
            <fileMode>0755</fileMode>
        </fileSet>

        <fileSet>
            <directory>../../</directory>
            <outputDirectory>doc</outputDirectory>
            <fileMode>0755</fileMode>
            <includes>
                <include>*.md</include>
            </includes>
        </fileSet>

        <fileSet>
            <directory>../framework/domain/src/main/resources</directory>
            <outputDirectory>script</outputDirectory>
            <fileMode>0755</fileMode>
        </fileSet>

        <fileSet>
            <directory>src/main/resources</directory>
            <outputDirectory>logs</outputDirectory>
            <excludes><exclude>**/*</exclude></excludes>
            <fileMode>0755</fileMode>
        </fileSet>

        <fileSet>
            <directory>src/main/resources</directory>
            <outputDirectory>plugins</outputDirectory>
            <excludes><exclude>**/*</exclude></excludes>
            <fileMode>0755</fileMode>
        </fileSet>
    </fileSets>

    <files>
        <file>
            <source>target/app-${revision}.jar</source><!-- 可以是相对路径或绝对路径,相对路径是相对与项目的根目录。-->
            <outputDirectory>./</outputDirectory> <!-- 输出目录-->
            <fileMode>0644</fileMode> <!--unix文件权限-->
        </file>
    </files>


</assembly>

目录结构:

解决思路:

前提:一开始我只对app进行了maven的package(因为我idea的maven不能对整个项目进行package正常打包),发现这样打出来的压缩包里面的jar没有更新代码

1.检查打包出来的jar是否更新代码了 -> 发现并没有更新
2.怀疑打包写错了 -> 没啥问题
3.进入整个项目(最大的文件夹)工作空间,使用mvn命令 
 

mvn clean package -D skipTests 
(清除 打包 跳过test文件 建议使用install)
mvn clean install -D skipTests

建议:

        在最外层pom的配置上加上 -SNAPSHOT(快照),使得每次打的是最新的。
        pacakge 命令会先检查本地仓库是否已经有了打出来的jar包,有的话直接使用,install 会强制更新

收获:

一定要对整个项目进行打包操作,不然找不到修改的模块的代码

        maven的生命周期

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将 IDEA Spark 代码打包jar 包,需要以下依赖插件: 1. Maven 插件:用来构建项目和打包jar 包; 2. Spark Core 依赖:Spark 的核心依赖,必须要有; 3. 其他 Spark 依赖:如果你使用了 Spark SQL、Spark Streaming 等组件,还需要添加相应的依赖; 4. 日志依赖:建议添加日志依赖,以便于调试和排查问题。 以下是一个示例的 pom.xml 文件,你可以根据自己的需要进行修改: ```xml <project> <modelVersion>4.0.0</modelVersion> <groupId>com.example.spark</groupId> <artifactId>my-spark-job</artifactId> <version>1.0-SNAPSHOT</version> <properties> <spark.version>3.1.2</spark.version> </properties> <dependencies> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_${scala.version}</artifactId> <version>${spark.version}</version> </dependency> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-sql_${scala.version}</artifactId> <version>${spark.version}</version> </dependency> <!-- 其他 Spark 依赖 --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.25</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>3.3.0</version> <configuration> <archive> <manifest> <mainClass>com.example.spark.MySparkJob</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project> ``` 这个示例 pom.xml 文件包含了 Spark Core、Spark SQL 和 slf4j-log4j12 三个依赖,使用了 Maven Compiler 插件和 Maven Assembly 插件来构建项目和打包jar 包。注意,这里的 mainClass 需要替换为你自己的 Spark 作业的入口类。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值