Intellij IDEA中maven項目打包問題


  學習使用java寫項目的時候,java的jar包對我來說是很神奇又很復雜不想去了解的東西,如今形勢所迫開始寫java項目,做了些了解,也有幾個問題。

1、其中一個打包方式

在pom文件中輸入如下插件(在<project>的里面),然后點擊右邊欄偏上那個“m”字,進入maven,選中項目下Lifecycle/package,然后運行maven中上方的運行小三角。

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>1.4</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <filters>
                                <filter>
                                    <artifact>*:*</artifact>
                                    <excludes>
                                        <exclude>META-INF/*.SF</exclude>
                                        <exclude>META-INF/*.DSA</exclude>
                                        <exclude>META-INF/*.RSA</exclude>
                                    </excludes>
                                </filter>
                            </filters>
                            <transformers>
                                <transformer
                                        implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <mainClass>com.lwx.sha256.main</mainClass>
                                </transformer>
                                <transformer
                                        implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                                    <resource>META-INF/spring.handlers</resource>
                                </transformer>
                                <transformer
                                        implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                                    <resource>META-INF/spring.schemas</resource>
                                </transformer>
                            </transformers>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
pom.xml

  注意:上面的<transformer>的<mainClass>指定了程序main函數入口所在的類

2、關於package

其實java文件的package我一開始是不用的,因為其他語言不需要,而且不用也沒見運行不了,所以我的代碼都是如下所示。

但是在打包的那一步驟可以看出來我是在pom文件中直接指定了項目入口,然后我就被動了解了一下package,如果我的目錄依舊如上圖所示,而且入口是在main文件中的main.class,那么我在pom中寫的應該是<mainClass>main</mainClass>,就沒有什么com.xxx.xxx了,但是我突然覺得太不規范了,把目錄改成如下圖所示:

3、關於java的jre和jdk

如果你上傳jar到遠端服務器,並且報了如下錯誤:

Exception in thread "main" java.lang.UnsupportedClassVersionError: org/springframework/boot/loader/JarLauncher : Unsupported major.minor version 52.0

正經來說就是由較高版本的JDK編譯的java class文件試圖在較低版本的JVM上運行產生的錯誤。最終是查到了解決方法,在pom中加入如下的配置,指定編譯版本,這里指定1.7:

      <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>7</source>
                    <target>7</target>
                </configuration>
            </plugin>

之前有嘗試更改jre版本,但其實這是java compiler的問題。

另外關於jre和jdk我還是雲里霧里,即使網上一套一套講了許多,但是我明知道java項目中package的規范,但是學習的時候死記,真正在用的時候還是會偷懶不建包。大概多用幾次就能更加清楚兩者的區別吧

  查看版本

#查看jre版本
$ java -version
#查看jdk版本
$ javac -version

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM