| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672 |
- <?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.1413.v65a_1fb_5a_dd02</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.588</revision>
- <changelist>-SNAPSHOT</changelist>
- <project.build.outputTimestamp>2026-10-20T06:14:02Z</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>3391.va_37fa_a_305d6d</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.1053.v85e6c1a_3b_278</winstone.version>
- <node.version>24.22.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.3.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>
|