Files
jenkins/pom.xml
T

673 lines
24 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<!--
The MIT License
Copyright (c) 2004-2011, Sun Microsystems, Inc., Kohsuke Kawaguchi, id:sorokh
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
-->
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.jenkins-ci</groupId>
<artifactId>jenkins</artifactId>
<version>2.1397.v033314c396ee</version>
<relativePath />
</parent>
<groupId>org.jenkins-ci.main</groupId>
<artifactId>jenkins-parent</artifactId>
<version>${revision}${changelist}</version>
<packaging>pom</packaging>
<name>Jenkins main module</name>
<description>The module that constitutes the main jenkins.war</description>
<url>https://github.com/jenkinsci/jenkins</url>
<licenses>
<license>
<name>The MIT license</name>
<url>https://opensource.org/licenses/MIT</url>
<distribution>repo</distribution>
</license>
</licenses>
<modules>
<module>bom</module>
<module>websocket/spi</module>
<module>websocket/jetty12-ee9</module>
<module>core</module>
<module>war</module>
<module>test</module>
<module>cli</module>
<module>coverage</module>
</modules>
<scm child.scm.connection.inherit.append.path="false" child.scm.developerConnection.inherit.append.path="false" child.scm.url.inherit.append.path="false">
<connection>scm:git:https://github.com/jenkinsci/jenkins.git</connection>
<developerConnection>scm:git:git@github.com:jenkinsci/jenkins.git</developerConnection>
<tag>${scmTag}</tag>
<url>https://github.com/jenkinsci/jenkins</url>
</scm>
<issueManagement>
<system>GitHub</system>
<url>https://github.com/jenkinsci/jenkins/issues</url>
</issueManagement>
<properties>
<revision>2.581</revision>
<changelist>-SNAPSHOT</changelist>
<project.build.outputTimestamp>2026-08-31T20:03:00Z</project.build.outputTimestamp>
<!-- configuration for patch tracker plugin -->
<project.patchManagement.system>github</project.patchManagement.system>
<patch.request.organisation>jenkinsci</patch.request.organisation>
<patch.request.repository>jenkins</patch.request.repository>
<project.patchManagement.url>https://api.github.com</project.patchManagement.url>
<patch.tracker.serverId>jenkins-jira</patch.tracker.serverId>
<changelog.url>https://www.jenkins.io/changelog</changelog.url>
<!-- Bundled Remoting version -->
<remoting.version>3386.v353e57a_1b_ea_0</remoting.version>
<spotbugs.effort>Max</spotbugs.effort>
<spotbugs.threshold>Medium</spotbugs.threshold>
<access-modifier.version>1.35</access-modifier.version>
<antlr.version>4.13.2</antlr.version>
<bridge-method-injector.version>1.32</bridge-method-injector.version>
<spotless.check.skip>false</spotless.check.skip>
<ban-junit4-imports.skip>false</ban-junit4-imports.skip>
<!-- Opt-out switches for steps that only matter when producing a release artifact.
Set to true by the quick-build profile below; see CONTRIBUTING.md. -->
<strip.license.comments.skip>false</strip.license.comments.skip>
<!-- Skips node installation, "yarn install" and "yarn build". Only safe when
war/src/main/webapp/jsbundles is already populated from an earlier build. -->
<skip.frontend>false</skip.frontend>
<winstone.version>8.1047.v331d3186f463</winstone.version>
<node.version>24.19.0</node.version>
</properties>
<!--
Note that the 'repositories' and 'pluginRepositories' blocks below are actually copy-pasted
from the Jenkins org pom. This is on purpose to keep Jenkins core buildable even if one has
*not* defined the specific details in the settings.xml file.
-->
<repositories>
<repository>
<id>repo.jenkins-ci.org</id>
<url>https://repo.jenkins-ci.org/public/</url>
<!-- allow snapshots -->
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>repo.jenkins-ci.org</id>
<url>https://repo.jenkins-ci.org/public/</url>
</pluginRepository>
</pluginRepositories>
<build>
<defaultGoal>install</defaultGoal>
<resources>
<resource>
<filtering>false</filtering>
<directory>${basedir}/src/main/resources</directory>
</resource>
<resource>
<filtering>true</filtering>
<directory>${basedir}/src/filter/resources</directory>
</resource>
</resources>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<!-- Version specified in parent POM -->
<configuration>
<compilerReuseStrategy>alwaysNew</compilerReuseStrategy>
<compilerArgs>
<!--
always compile package-info.java for useIncrementalCompilation
ref: https://stackoverflow.com/questions/6770455/maven-compiling-package-info-java-to-package-info-class
-->
<compilerArg>-Xpkginfo:always</compilerArg>
</compilerArgs>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<!-- Version specified in parent POM -->
<configuration>
<quiet>true</quiet>
<splitindex>true</splitindex>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<!-- Version specified in parent POM -->
<configuration>
<systemPropertyVariables>
<java.io.tmpdir>${project.build.directory}</java.io.tmpdir>
<forkedProcessTimeoutInSeconds>3600</forkedProcessTimeoutInSeconds>
<java.awt.headless>true</java.awt.headless>
</systemPropertyVariables>
<environmentVariables>
<DISABLE_SYMLINK_TESTS>${disable.symlink.tests}</DISABLE_SYMLINK_TESTS>
</environmentVariables>
</configuration>
</plugin>
<plugin>
<groupId>org.kohsuke</groupId>
<artifactId>access-modifier-checker</artifactId>
<version>${access-modifier.version}</version>
</plugin>
<plugin>
<groupId>io.jenkins.tools.maven</groupId>
<artifactId>license-maven-plugin</artifactId>
<!-- Version specified in parent POM -->
<executions>
<execution>
<goals>
<goal>process</goal>
</goals>
<phase>compile</phase>
<configuration>
<requireCompleteLicenseInfo>true</requireCompleteLicenseInfo>
<script>../licenseCompleter.groovy</script>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.jvnet.localizer</groupId>
<artifactId>localizer-maven-plugin</artifactId>
<!-- Version specified in parent POM -->
<configuration>
<outputEncoding>UTF-8</outputEncoding>
</configuration>
</plugin>
<plugin>
<groupId>org.jvnet.hudson.tools</groupId>
<artifactId>maven-encoding-plugin</artifactId>
<version>1.1</version>
</plugin>
<plugin>
<groupId>io.jenkins.tools</groupId>
<artifactId>bridge-method-injector</artifactId>
<version>${bridge-method-injector.version}</version>
</plugin>
<plugin>
<groupId>org.antlr</groupId>
<artifactId>antlr4-maven-plugin</artifactId>
<version>${antlr.version}</version>
</plugin>
<!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<!-- Version specified in parent POM -->
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<!-- Version specified in parent POM -->
<versionRange>[2.3,)</versionRange>
<goals>
<goal>list</goal>
<goal>unpack-dependencies</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore />
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
<plugin>
<groupId>com.github.spotbugs</groupId>
<artifactId>spotbugs-maven-plugin</artifactId>
<!-- Version specified in parent POM -->
<configuration>
<maxHeap>768</maxHeap>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<!-- Version specified in parent POM -->
<configuration>
<consoleOutput>true</consoleOutput>
<includeTestSourceDirectory>true</includeTestSourceDirectory>
<configLocation>${maven.multiModuleProjectDirectory}/src/checkstyle/checkstyle-configuration.xml</configLocation>
<suppressionsLocation>${maven.multiModuleProjectDirectory}/src/checkstyle/checkstyle-suppressions.xml</suppressionsLocation>
</configuration>
<dependencies>
<dependency>
<groupId>com.puppycrawl.tools</groupId>
<artifactId>checkstyle</artifactId>
<version>14.0.0</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>validate</id>
<goals>
<goal>check</goal>
</goals>
<phase>validate</phase>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.15</version>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>com.diffplug.spotless</groupId>
<artifactId>spotless-maven-plugin</artifactId>
<!-- Version specified in parent POM -->
<configuration>
<antlr4>
<antlr4Formatter />
</antlr4>
<java combine.self="override">
<endWithNewline />
<importOrder />
<indent>
<spaces>true</spaces>
</indent>
<removeUnusedImports />
<trimTrailingWhitespace />
</java>
</configuration>
</plugin>
<plugin>
<artifactId>maven-release-plugin</artifactId>
<!-- Version specified in parent POM -->
<configuration>
<!-- work around for a bug in javadoc plugin that causes the release to fail. see MRELEASE-271 -->
<preparationGoals>-Dspotless.check.skip clean install</preparationGoals>
<goals>-DskipTests -Dspotbugs.skip -Dmaven.checkstyle.skip -Dspotless.check.skip generate-resources javadoc:javadoc deploy</goals>
<pushChanges>false</pushChanges>
<localCheckout>true</localCheckout>
<tagNameFormat>jenkins-@{project.version}</tagNameFormat>
</configuration>
</plugin>
<plugin>
<artifactId>maven-remote-resources-plugin</artifactId>
<!-- Version specified in parent POM -->
<executions>
<execution>
<goals>
<goal>process</goal>
</goals>
<configuration>
<resourceBundles>
<resourceBundle>org.jvnet.hudson:license:1.0</resourceBundle>
</resourceBundles>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<!-- Version specified in parent POM -->
<executions>
<execution>
<id>enforce-banned-dependencies</id>
<goals>
<goal>enforce</goal>
</goals>
<configuration>
<rules>
<bannedDependencies>
<excludes combine.children="append">
<exclude>org.sonatype.sisu:sisu-guice</exclude>
<exclude>commons-logging:commons-logging:*:jar:compile</exclude>
<exclude>commons-logging:commons-logging:*:jar:runtime</exclude>
</excludes>
</bannedDependencies>
</rules>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<!-- Version specified in parent POM -->
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>debug</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>release</id>
<build>
<plugins>
<plugin>
<artifactId>maven-gpg-plugin</artifactId>
<!-- Version specified in parent POM -->
<executions>
<execution>
<id>sign-artifacts</id>
<goals>
<goal>sign</goal>
</goals>
<phase>verify</phase>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>lts-release</id>
<properties>
<changelog.url>https://www.jenkins.io/changelog-stable</changelog.url>
</properties>
</profile>
<profile>
<!--
Merged by id with the quick-build profile in the parent POM, which already skips the
linters and static analysis. These additions turn off work that only matters when
producing a release artifact, so a development build spends its time compiling.
-->
<id>quick-build</id>
<properties>
<!-- Only shrinks the packaged jar. -->
<strip.license.comments.skip>true</strip.license.comments.skip>
<remoteresources.skip>true</remoteresources.skip>
<!--
The parent POM cannot set this because a plugin may be producing a test jar, but
nothing in this repository consumes one, so there is nothing to compile tests for.
Note that this means test classes are absent afterwards: drop the profile (or pass
-Dmaven.test.skip=false) before running tests against the build output.
-->
<maven.test.skip>true</maven.test.skip>
</properties>
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>io.jenkins.tools.maven</groupId>
<artifactId>license-maven-plugin</artifactId>
<!-- Version specified in parent POM -->
<executions>
<execution>
<!--
This plugin has no skip parameter, so unbind it instead. It resolves and
builds the POM of every transitive dependency to produce META-INF/licenses.xml,
which is only read by the "About Jenkins" page; AboutJenkins#getLicensesURL
returns null when it is absent and the view already handles that.
-->
<id>default</id>
<phase>none</phase>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
</build>
</profile>
<profile>
<id>yarn-execution</id>
<activation>
<file>
<exists>package.json</exists>
</file>
</activation>
<build>
<plugins>
<plugin>
<groupId>com.github.eirslett</groupId>
<artifactId>frontend-maven-plugin</artifactId>
<version>2.0.2</version>
<executions>
<execution>
<id>install node and corepack</id>
<goals>
<goal>install-node-and-corepack</goal>
</goals>
<phase>initialize</phase>
<configuration>
<nodeVersion>v${node.version}</nodeVersion>
<nodeDownloadRoot>https://repo.jenkins-ci.org/nodejs-dist/</nodeDownloadRoot>
<skip>${skip.frontend}</skip>
</configuration>
</execution>
<execution>
<id>yarn install</id>
<goals>
<goal>corepack</goal>
</goals>
<phase>initialize</phase>
<configuration>
<arguments>yarn install</arguments>
<skip>${skip.frontend}</skip>
</configuration>
</execution>
<execution>
<id>yarn build</id>
<goals>
<goal>corepack</goal>
</goals>
<phase>generate-sources</phase>
<configuration>
<arguments>yarn build</arguments>
<skip>${skip.frontend}</skip>
</configuration>
</execution>
<execution>
<id>yarn test</id>
<goals>
<goal>corepack</goal>
</goals>
<phase>test</phase>
<configuration>
<arguments>yarn test</arguments>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<!-- Version specified in grandparent POM -->
<configuration>
<!--
The node toolchain and the downloaded packages are deliberately left alone:
deleting them costs several seconds of its own and then forces the node install
and "yarn install" to start from nothing on every build, and since .yarnrc.yml
sets enableGlobalCache: false, .yarn holds the only copy of the package cache.
"yarn install" runs at initialize on every build, so stale dependencies still
heal themselves. Use -Dclean.node to delete them anyway.
-->
<filesets>
<fileset>
<directory>war/src/main/webapp/jsbundles</directory>
<followSymlinks>false</followSymlinks>
</fileset>
</filesets>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>yarn-ci-lint</id>
<activation>
<property>
<name>env.CI</name>
</property>
<file>
<exists>package.json</exists>
</file>
</activation>
<build>
<plugins>
<plugin>
<groupId>com.github.eirslett</groupId>
<artifactId>frontend-maven-plugin</artifactId>
<version>2.0.2</version>
<executions>
<execution>
<id>yarn lint:ci</id>
<goals>
<goal>corepack</goal>
</goals>
<phase>test</phase>
<configuration>
<arguments>yarn lint:ci</arguments>
<skip>${yarn.lint.skip}</skip>
</configuration>
</execution>
<execution>
<id>prettier</id>
<goals>
<goal>corepack</goal>
</goals>
<phase>test</phase>
<configuration>
<arguments>yarn exec prettier --check .</arguments>
<skip>${yarn.lint.skip}</skip>
<testFailureIgnore>false</testFailureIgnore>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>yarn-lint</id>
<activation>
<property>
<name>!env.CI</name>
</property>
<file>
<exists>package.json</exists>
</file>
</activation>
<build>
<plugins>
<plugin>
<groupId>com.github.eirslett</groupId>
<artifactId>frontend-maven-plugin</artifactId>
<version>2.0.2</version>
<executions>
<execution>
<id>yarn lint</id>
<goals>
<goal>corepack</goal>
</goals>
<phase>test</phase>
<configuration>
<arguments>yarn lint</arguments>
<skip>${yarn.lint.skip}</skip>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<!-- When changing branches that touch frontend assets this can be a good idea but not for every fresh build. -->
<id>clean-node</id>
<activation>
<property>
<name>clean.node</name>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<!-- Version specified in grandparent POM -->
<configuration>
<!-- Replaced rather than appended, because merging repeated <fileset> elements
across profiles is not well defined. -->
<filesets combine.self="override">
<fileset>
<directory>war/src/main/webapp/jsbundles</directory>
<followSymlinks>false</followSymlinks>
</fileset>
<fileset>
<directory>.yarn</directory>
<followSymlinks>false</followSymlinks>
</fileset>
<fileset>
<directory>node</directory>
<followSymlinks>false</followSymlinks>
</fileset>
<fileset>
<directory>node_modules</directory>
<followSymlinks>false</followSymlinks>
</fileset>
</filesets>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>disable-symlink-tests</id>
<activation>
<os>
<family>windows</family>
</os>
<property>
<name>!env.CI</name>
</property>
</activation>
<properties>
<disable.symlink.tests>true</disable.symlink.tests>
</properties>
</profile>
</profiles>
</project>