Tôi đang nghĩ đến việc chuyển sang Gradle. Tuy nhiên, tôi có một số plugin Maven cần được hỗ trợ trong tương lai gần.Tạo các plugin Maven bằng Gradle
Có cách nào để xây dựng các plugin Maven bằng Gradle không?
Tôi đang nghĩ đến việc chuyển sang Gradle. Tuy nhiên, tôi có một số plugin Maven cần được hỗ trợ trong tương lai gần.Tạo các plugin Maven bằng Gradle
Có cách nào để xây dựng các plugin Maven bằng Gradle không?
Hiện tại tính năng này không được hỗ trợ nhưng trên số development roadmap. Kiểm tra từng lần một roadmap dashboard để xem trạng thái có thay đổi hay không.
Tôi không biết plugin Gradle của bên thứ ba cho phép tạo plugin Maven. Một khả năng là gọi Maven để làm một phần công việc (đặc biệt là tạo siêu dữ liệu). POM cần thiết có thể được tạo ra khi đang bay. Một khả năng khác là cam kết siêu dữ liệu để kiểm soát nguồn và cập nhật nó theo cách thủ công (có thể bằng cách chạy Maven khi cần). Cuối cùng nhưng không kém phần quan trọng bạn có thể viết một số mã thực hiện tạo siêu dữ liệu ở phía Gradle, có thể sử dụng lại một số mã Maven.
Quá xấu này không được lên kế hoạch. Chúng ta hãy xem nếu một workaround tốt quay lên ... –
Here's something mà làm việc cho tôi:
"install.repositories.mavenInstaller.pom.writeTo('pom.xml')"
"mvn org.apache.maven.plugins:maven-plugin-plugin:3.2:descriptor"
Bằng cách này, "build/classes/main/META-INF/maven/plugin.xml"
được tạo và sau đó được đóng gói đúng cách bởiNhiệm vụ, đó là tất cả những gì cần thiết cho tệp jar để trở thành một plugin Maven, AFAIK. Ngoài ra, tôi tin rằng, "maven-plugin-annotations" nên được sử dụng trong plugin.
task pluginDescriptor(type: Exec) {
commandLine 'mvn', '-e', '-B', 'org.apache.maven.plugins:maven-plugin-plugin:3.2:descriptor'
doFirst {
final File pom = project.file('pom.xml')
install.repositories.mavenInstaller.pom.writeTo(pom)
assert pom.file, "[$pom.canonicalPath] was not created"
pom.text = pom.text.
replace('<groupId>unknown</groupId>', "<groupId>${project.group}</groupId>").
replace('<artifactId>empty-project</artifactId>', "<artifactId>${project.name}</artifactId>").
replace('<version>0</version>', """
|<version>${version}</version>
| <packaging>maven-plugin</packaging>
| <build>
| <directory>\${project.basedir}/build</directory>
| <outputDirectory>\${project.build.directory}/classes/main</outputDirectory>
| </build>
|""".stripMargin().trim())
}
doLast {
final pluginDescriptor = new File((File) project.compileGroovy.destinationDir, 'META-INF/maven/plugin.xml')
assert pluginDescriptor.file, "[$pluginDescriptor.canonicalPath] was not created"
println "Plugin descriptor file:$pluginDescriptor.canonicalPath is created successfully"
}
}
project.compileGroovy.doLast{ pluginDescriptor.execute() }
Cảm ơn rất nhiều. Dựa trên điều này, tôi đã tạo phiên bản sau không cần thay thế: https://gist.github.com/fikovnik/ffc1fed1867bc7fa679aaf8e48f00c21 – fikovnik
Mục tiêu của chúng tôi là hỗ trợ thêm _reuse_ các plugin Maven từ Gradle, thay vì hỗ trợ _build_ chúng. –
Tôi hiểu. Tôi nghĩ tôi đã hiểu sai câu hỏi. –
liên kết bảng điều khiển lộ trình không còn hoạt động – Matthew