gpt4 book ai didi

maven - 如何创建 pom.xml 来编译我的 Jenkins Pipeline 共享库?

转载 作者:行者123 更新时间:2023-12-04 01:46:12 24 4
gpt4 key购买 nike

A Jenkins Pipeline Shared Library通常具有以下目录结构:

(root)
+- src # Groovy source files
| +- org
| +- foo
| +- Bar.groovy # for org.foo.Bar class
+- vars
| +- foo.groovy # for global 'foo' variable
| +- foo.txt # help for 'foo' variable
+- resources # resource files (external libraries only)
| +- org
| +- foo
| +- bar.json # static helper data for org.foo.Bar

这些是使用 Jenkins 库中的一些代码的 grovvy 文件。我希望能够使用 Maven 编译它们,可能使用 GMavenPlus maven 插件,并将一些 Jenkins 库定义为依赖项。

然后我想编译,这样我就可以在提交或上传到 Jenkins 之前验证文件。在编辑文件时,我可能还会给我更好的代码完成。

有人可以帮我创建一个可以编译它的 pom.xml 文件吗?

最佳答案

我建议使用 Gradle 而不是 Maven。下面你可以找到一个最小的 build.gradle 文件,它允许你编译、测试和打包 Jenkins 共享库(如果你需要与不同的项目共享它,甚至可以安装在 Maven 存储库中):

apply plugin: 'groovy'
apply plugin: 'idea'
apply plugin: 'jacoco'
apply plugin: 'maven'


repositories {
mavenCentral()
}

sourceSets {
main {
groovy {
srcDirs = ['src', 'vars']
}
resources {
srcDirs = ['resources']
}
}
test {
groovy {
srcDirs = ['test']
}
}
}

dependencies {
compile 'com.cloudbees:groovy-cps:1.22'
compile 'org.codehaus.groovy:groovy-all:2.4.12'

// https://github.com/jenkinsci/JenkinsPipelineUnit
testCompile 'com.lesfurets:jenkins-pipeline-unit:1.1'
testCompile 'junit:junit:4.12'
}

jacocoTestReport {
reports {
xml.enabled true
}
}

这个最小的 build.gradle 文件使用 jenkins-pipeline-unit - Jenkins 管道的单元测试框架。它非常方便,让生活轻松 10 倍。

或者,您可以检查以下 Gradle 模板项目以获取 Jenkins Pipeline 共享库 - https://github.com/mkobit/jenkins-pipeline-shared-library-example它具有许多其他功能,还有助于维护您的共享库项目。

但是,如果您真的需要为此使用 Maven,您可以使用以下 pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>jenkins-shared-library</artifactId>
<version>1.0.0</version>
<dependencies>
<dependency>
<groupId>com.cloudbees</groupId>
<artifactId>groovy-cps</artifactId>
<version>1.22</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>2.4.12</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.lesfurets</groupId>
<artifactId>jenkins-pipeline-unit</artifactId>
<version>1.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<sourceDirectory>src/</sourceDirectory>
<testSourceDirectory>test/</testSourceDirectory>
<plugins>
<plugin>
<groupId>org.codehaus.gmavenplus</groupId>
<artifactId>gmavenplus-plugin</artifactId>
<version>1.6.2</version>
<executions>
<execution>
<goals>
<goal>addSources</goal>
<goal>addTestSources</goal>
<goal>generateStubs</goal>
<goal>compile</goal>
<goal>generateTestStubs</goal>
<goal>compileTests</goal>
<goal>removeStubs</goal>
<goal>removeTestStubs</goal>
</goals>
</execution>
</executions>
<configuration>
<sources>
<source>
<directory>${project.basedir}/src</directory>
<includes>
<include>**/*.groovy</include>
</includes>
</source>
<source>
<directory>${project.basedir}/vars</directory>
<includes>
<include>**/*.groovy</include>
</includes>
</source>
</sources>
<testSources>
<source>
<directory>${project.basedir}/test</directory>
<includes>
<include>**/*.groovy</include>
</includes>
</source>
</testSources>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>attach-sources</id>
<goals>
<goal>jar-no-fork</goal>
<goal>test-jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

这或多或少等同于 build.gradle 文件。

关于maven - 如何创建 pom.xml 来编译我的 Jenkins Pipeline 共享库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55190307/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com