springboot將項目源代碼打包並發布到倉庫
如果我們有一些類和方法是公用的,可以打開公用包,而這時使用默認的build方式都所有依賴都打進去,而且你當然項目的文件雖然在包里,但卻在boot-inc里,這里的文件不能被其它包識別,只是一大堆class文件,然后下面的方法,我們會生成一個后綴stubs的文件,它只有你需要的幾個對象,沒有多余的依賴項。
打開build.gradle文件,添加以下內容即可
//打包源代碼
task stubsJar(type: Jar, dependsOn: classes) {
println '打包源代碼'
classifier = "stubs"
into('/') {
from("${project.rootDir}/src/main/java/")
include('lind/core/**') //包含
exclude '**/CoreApplication.java' //排除
}
}
artifacts {
archives stubsJar
}
//直接調用install把它發到本地~/.m2/repository倉庫里
install {
println "發布到本地倉庫"
dependsOn << stubsJar
repositories.mavenInstaller {
pom.version = "$project.version"
pom.artifactId = "$artifactId"
pom.groupId = "$project.group"
}
}
repositories {
mavenLocal()
maven {
name "aliyun1"
url 'http://maven.aliyun.com/nexus/content/groups/public'
}
mavenCentral()
}
dependencies {
compileClasspath('org.springframework.boot:spring-boot-starter-web') //不會被打包到jar里,這樣包就不會那么大了
testCompileClasspath('org.springframework.boot:spring-boot-starter-test')
}
然后在進行gradle build
之后,會在build/libs目前生成兩個jar文件,其中我們要打到倉庫的是帶有stubs后綴的。
- 生成本地倉庫
mvn install:install-file -Dfile=/Users/lind.zhang/github/core/build/libs/core-0.6-stubs.jar -DgroupId=lind -DartifactId=core -Dversion=0.6 -Dpackaging=jar
- 在其它項目里使用依賴的方法引用這個包
dependencies {
compile('org.springframework.boot:spring-boot-starter-web')
testCompile('org.springframework.boot:spring-boot-starter-test')
compile("lind:core:0.6")
}
感謝各位的閱讀!