diff --git a/pom.xml b/pom.xml
index 2e2da9d649..126382f4c5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1338,6 +1338,10 @@
oss
${project.build.directory}
${project.artifactId}-${project.version}.pom
+
+
+ flatten
+
diff --git a/src/it/cd-plugin/.mvn/extensions.xml b/src/it/cd-plugin/.mvn/extensions.xml
new file mode 100644
index 0000000000..90787cbb2d
--- /dev/null
+++ b/src/it/cd-plugin/.mvn/extensions.xml
@@ -0,0 +1,7 @@
+
+
+ io.jenkins.tools.incrementals
+ git-changelist-maven-extension
+ 1.6
+
+
diff --git a/src/it/cd-plugin/.mvn/maven.config b/src/it/cd-plugin/.mvn/maven.config
new file mode 100644
index 0000000000..f7daf60d07
--- /dev/null
+++ b/src/it/cd-plugin/.mvn/maven.config
@@ -0,0 +1,3 @@
+-Pconsume-incrementals
+-Pmight-produce-incrementals
+-Dchangelist.format=%d.v%s
diff --git a/src/it/cd-plugin/invoker.properties b/src/it/cd-plugin/invoker.properties
new file mode 100644
index 0000000000..c459b1104e
--- /dev/null
+++ b/src/it/cd-plugin/invoker.properties
@@ -0,0 +1,2 @@
+# Same options as in https://github.com/jenkins-infra/jenkins-maven-cd-action/blob/master/run.sh (but hard-coding a sample changelist)
+invoker.goals=-Dstyle.color=always -Dset.changelist -Dchangelist=1234.deadbeef5678 -ntp -P-consume-incrementals -Pquick-build clean install
diff --git a/src/it/cd-plugin/pom.xml b/src/it/cd-plugin/pom.xml
new file mode 100644
index 0000000000..ab64c77d1a
--- /dev/null
+++ b/src/it/cd-plugin/pom.xml
@@ -0,0 +1,47 @@
+
+
+ 4.0.0
+
+ org.jenkins-ci.plugins
+ plugin
+ @project.version@
+
+
+ org.jenkins-ci.plugins.its
+ cd-plugin
+ ${changelist}
+ hpi
+ CD plugin
+ CD description
+
+ 999999-SNAPSHOT
+ false
+
+
+
+
+ org.jenkins-ci.plugins
+ structs
+ 1.5
+
+
+
+
+
+ org.jenkins-ci.plugins
+ structs
+
+
+
+
+ repo.jenkins-ci.org
+ https://repo.jenkins-ci.org/public/
+
+
+
+
+ repo.jenkins-ci.org
+ https://repo.jenkins-ci.org/public/
+
+
+
diff --git a/src/it/cd-plugin/postbuild.groovy b/src/it/cd-plugin/postbuild.groovy
new file mode 100644
index 0000000000..0fce501e7e
--- /dev/null
+++ b/src/it/cd-plugin/postbuild.groovy
@@ -0,0 +1,23 @@
+assert new File(basedir, 'target/cd-plugin.hpi').file
+assert new File(basedir, 'target/cd-plugin.jar').file
+
+File installed = new File(basedir, '../../local-repo/org/jenkins-ci/plugins/its/cd-plugin/1234.deadbeef5678/')
+assert new File(installed, 'cd-plugin-1234.deadbeef5678.hpi').file
+
+def targetPom = new File(basedir, 'target/cd-plugin-1234.deadbeef5678.pom')
+assert targetPom.file
+
+def installedPom = new File(installed, 'cd-plugin-1234.deadbeef5678.pom')
+assert installedPom.file
+
+assert installedPom.text.contains("")
+assert installedPom.text.contains("")
+assert installedPom.text.contains("")
+assert installedPom.text.contains("")
+assert installedPom.text.contains("")
+assert !installedPom.text.contains("")
+assert !installedPom.text.contains("")
+assert !installedPom.text.contains("")
+assert !installedPom.text.contains("")
+
+return true
diff --git a/src/it/cd-plugin/src/main/resources/index.jelly b/src/it/cd-plugin/src/main/resources/index.jelly
new file mode 100644
index 0000000000..2f655e510a
--- /dev/null
+++ b/src/it/cd-plugin/src/main/resources/index.jelly
@@ -0,0 +1,2 @@
+
+