最近要開發新的項目,就花了幾天時間看了下spring boot的相關資料,然后做了一個demo,不得不說開發效率確實很快,幾行注解就完成了事務,aop,數據庫等相關配置;但由於先前習慣了spring mvc的開發,還是有些不習慣,這里說的是這個項目大部分都是從原來的舊項目拷貝出來的代碼,因為框架不一樣,pom.xml也是不同的,然后抽取出了一個maven 工程用來存放公共的配置文件和代碼等,也就是所謂的聚合工程。
但是到一直報錯,錯誤代碼是 source 1.5 中不支持 diamond 運算符, 項目右鍵--》Java Compiler 發現是1.5的jdk,很奇怪,我記得之前是1.7,后來找到原因是因為我之前在eclipse操作過 update project,項目又變成了1.5;改回來后再次 update project后又改變成jdk1.5, 就是這個原因導致spring boot 插件一直無法編譯項目,就算后續在 Java Compiler改成1.7也無法編譯,這個原因暫時沒找到。
后來繼續排查到公共項目這里,發現是這里出了問題,因為我單獨對spring boot項目打包項目是沒問題的,但是依賴公共項目后就出現問題,當時很奇怪的是報錯的竟然報的不是公共工程的錯誤,而是我的spring boot項目的錯誤,然后繼續查找原因,在公共工程這里試着執行了一下打包的命令,沒有出現異常錯誤,后來想了個辦法干脆把 service 和 mapper 也放到公共項目,然后公共工程是一個jar包,被其他項目引用的時候是以一個jar的形式存放,然而我們只要依賴他的編譯后的class文件,於是進行了遷移后配置如下:
spring boot 工程 pom.xml(這里的編譯插件用的是boot官網提供的)
<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.gzdtl</groupId> <artifactId>gzdtl-person-loan</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <dependency> <groupId>com.gzdtl</groupId> <artifactId>gzdtl-boot-common</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> </dependencies> <build> <finalName>gzdtl-mz</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <dependencies> <!-- spring熱部署--> </dependencies> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> </plugins> </build> <repositories> <repository> <id>spring-milestone</id> <url>https://repo.spring.io/libs-release</url> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>spring-milestone</id> <url>https://repo.spring.io/libs-release</url> </pluginRepository> </pluginRepositories> </project>
公共項目 pom.xml
<build> <finalName>gzdtl-boot-common</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> </plugins> </build>
