Я хочу, чтобы запустить простой поток, у меня есть 6 профилей:Как игнорировать профили maven в дочернем модуле?
генерировать-схема, распаковывать войны, вводное мол, тест, стоп-молы, старт-стоп-приложение
тест профиль будет запущен на другом дочернем модуле, когда я объявляю его в целях/свойствах mvn: * clean -activate-profiles generate-schema, unpack-war, start-stop-app, test -projects apm-tests, apm-tests \ apm-adapter-tests подтверждают. *
Как я могу заставить дочерний модуль запускать только те тесты и пропускать остальные профилей (генерация-схема и т. д.)?
Родитель ПОМ образец:
<?xml version="1.0" encoding="UTF-8"?>
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<project>
<parent>
<artifactId>apm-root</artifactId>
<groupId>com.apm.platform</groupId>
<version>12.50.9999-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>apm-tests</artifactId>
<packaging>pom</packaging>
<modules>
<module>alm-coverage-report</module>
</modules>
<profile>
<id>test</id>
<build>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>generate-schema</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<executions>
<execution>
<id>generate-schema</id>
<phase>pre-integration-test</phase>
<goals>
<goal>java</goal>
</goals>
<configuration>
<mainClass>com.apm.platform.siteadmin.setup.Setup</mainClass>
<classpathScope>test</classpathScope>
<systemProperties>
<systemProperty>
<key>InstallationFolder</key>
<value>${tests.runtime}</value>
</systemProperty>
<systemProperty>
<key>RepositoryFolder</key>
<value>${tests.runtime}/repository</value>
</systemProperty>
<systemProperty>
<key>LogFolder</key>
<value>${tests.runtime}/log</value>
</systemProperty>
<systemProperty>
<key>mercury.td.sa_config_dir</key>
<value>${tests.runtime}</value>
</systemProperty>
<systemProperty>
<key>CreateLabProject</key>
<value>${create.lab.project}</value>
</systemProperty>
</systemProperties>
<arguments>
<argument>--auto</argument>
<argument>${db.schema}</argument>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>start-jetty</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<configuration>
<war>${unpacked.war.directory}</war>
<contextXml>${unpacked.war.directory}/WEB-INF/jetty-web.xml</contextXml>
<webApp>
<contextPath>/qcbin</contextPath>
</webApp>
<systemProperties>
<systemProperty>
<name>mercury.td.sa_config_dir</name>
<value>${tests.runtime}</value>
</systemProperty>
<systemProperty>
<name>jetty.port</name>
<value>${jetty.start.port}</value>
</systemProperty>
</systemProperties>
<stopPort>${jetty.stop.port}</stopPort>
<stopKey>STOP</stopKey>
</configuration>
<executions>
<execution>
<id>start-jetty</id>
<phase>pre-integration-test</phase>
<goals>
<goal>deploy-war</goal>
</goals>
<configuration>
<scanIntervalSeconds>0</scanIntervalSeconds>
<daemon>false</daemon>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>start-stop-app</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<configuration>
<war>${unpacked.war.directory}</war>
<contextXml>${unpacked.war.directory}/WEB-INF/jetty-web.xml</contextXml>
<webApp>
<contextPath>/qcbin</contextPath>
</webApp>
<systemProperties>
<systemProperty>
<name>mercury.td.sa_config_dir</name>
<value>${tests.runtime}</value>
</systemProperty>
<systemProperty>
<name>jetty.port</name>
<value>${jetty.start.port}</value>
</systemProperty>
</systemProperties>
<stopPort>${jetty.stop.port}</stopPort>
<stopKey>STOP</stopKey>
</configuration>
<executions>
<execution>
<id>start-jetty</id>
<phase>pre-integration-test</phase>
<goals>
<goal>deploy-war</goal>
</goals>
<configuration>
<scanIntervalSeconds>0</scanIntervalSeconds>
<daemon>true</daemon>
</configuration>
</execution>
<execution>
<id>stop-jetty</id>
<phase>post-integration-test</phase>
<goals>
<goal>stop</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>stop-jetty</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<configuration>
<stopPort>${jetty.stop.port}</stopPort>
<stopKey>STOP</stopKey>
</configuration>
<executions>
<execution>
<id>stop-jetty</id>
<phase>post-integration-test</phase>
<goals>
<goal>stop</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<!-- create project profile -->
<profile>
<id>create-project</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<serverUrl>http://localhost:${env.JETTY_PORT}/qcbin</serverUrl>
<saUser>sa</saUser>
<projectUserName>restuser</projectUserName>
<domain>UNITEST</domain>
<project>resttest</project>
<overwrite>true</overwrite>
</properties>
<build>
<plugins>
<plugin>
<groupId>com.apm.maven.plugins.alm</groupId>
<artifactId>rest-create-project</artifactId>
<version>1.0.8.2</version>
<executions>
<execution>
<id>clean-create</id>
<phase>pre-integration-test</phase>
<goals>
<goal>create-project</goal>
</goals>
<configuration>
<serverUrl>${serverUrl}</serverUrl>
<saUser>${saUser}</saUser>
<projectUserName>${projectUserName}</projectUserName>
<projectUserPassword>${projectUserPassword}</projectUserPassword>
<domain>${domain}</domain>
<project>${project}</project>
<overwrite>${overwrite}</overwrite>
<extensions>${extensions}</extensions>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
модуль Child pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>com.apm.platform</groupId>
<artifactId>apm-tests</artifactId>
<version>12.50.9999-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>apm-adapter-tests</artifactId>
<packaging>pom</packaging>
<properties>
<tests.version>${project.version}</tests.version>
</properties>
<dependencies>
<dependency>
<groupId>com.apm.platform</groupId>
<artifactId>apm-synchronizer-adapter-testing</artifactId>
<version>1.10.9999-SNAPSHOT</version>
<classifier>test-jar-with-dependencies</classifier>
</dependency>
</dependencies>
<profiles>
<!--run integration tests using surefire plugin -->
<profile>
<id>itest</id>
<build>
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>${surefire.version}</version>
<dependencies>
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
<version>${surefire.version}</version>
</dependency>
</dependencies>
<executions>
<execution>
<id>integration-test</id>
<phase>integration-test</phase>
<goals>
<goal>test</goal>
</goals>
<configuration>
<excludedGroups>com.apm.platform.CAPQIntegrationTestCategory</excludedGroups>
<skipTests>false</skipTests>
<excludes>
<exclude>junit/**/*.java</exclude>
<exclude>org/**/*.java</exclude>
</excludes>
<argLine>-Xmx1536m</argLine>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>sync-adapter</id>
<dependencies>
<dependency>
<groupId>com.apm.platform</groupId>
<artifactId>apm-synchronizer-adapter-testing</artifactId>
<version>1.10.9999-SNAPSHOT</version>
<classifier>test-jar-with-dependencies</classifier>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<!--copies dependent classes from test-jars-->
<id>unpack-tests</id>
<phase>pre-integration-test</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>com.apm.platform</groupId>
<artifactId>agm-synchronizer-adapter-testing</artifactId>
<version>1.10.9999-SNAPSHOT</version>
<classifier>test-jar-with-dependencies</classifier>
<outputDirectory>${project.build.testOutputDirectory}</outputDirectory>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
13:03:13 2015-11-30 13: 03: 14.422: INFO: oejs.Server: main: Started
@ 207555ms 13:03:13 [INFO] Начало Jetty сервера 13:03:13 [INFO]
13:03:13 [INFO] --- Maven-безошибочный-плагин: 2,16: тест (интеграция -test)
@ apm-tests --- 13:03:14 [INFO] Нет тестов для запуска. 13:03:14 [INFO]
13:03:14 [INFO] --- Пристань-Maven-плагин: 9.1.3.v20140225: остановка
(стоп-причал) @ APM-тесты --- 13:03:14 [INFO] 13:03:14 [INFO] ---
maven-source-plugin: 2.2.1: jar-no-fork (attach-sources) @ alm-tests ---
13:03:14 2015-11-30
13: 03: 14,820: INFO: oejs.ServerConnector: ShutdownMonitor: Остановился
ServerConnector @ 4c8d3b5c {HTTP/1.1} {} 0.0.0.0:5729 13:03:14 [INFO]
13:03:14 [INFO] --- Maven-источник-плагин: 2.2.1: тест-банку-нет вилки
(прикрепляются-тест-источники) @ ALM-тесты --- 13:03:14 [INFO]
13:03:14 [INFO]
- -------------- 13:03:14 [INFO] Строительство agm-synchronizer-adapter-testing
12.50.9999-SNAPSHOT 13:03:14 [INFO] ------------
Некоторые вопросы: нормально ли, чтобы дочерний модуль имел pom в качестве упаковки, когда он предназначен для выполнения тестов? Модуль/проект по упаковке pom не предназначен для предоставления какого-либо исходного/тестового исходного кода.Более того, у описанного родителя и ребенка нет какой-либо связи между ними (родитель не имеет дочернего элемента среди своих модулей, у ребенка нет родителя как родителя), это специально? –
@ A.DiMatteo Ok. Таким образом, упаковка детского модуля - pom, но я хочу запустить его как тест, но когда я объявил его как тест, у меня появилась ошибка. Я хочу, чтобы у родителя не было никаких отношений с ребенком (если это возможно), но родительский родитель действительно является родительским pom.xml (исправлено это тоже). И цель все еще заключается в том, что отец будет запускать все профили, а ребенок будет запускать тесты. - –
Для того чтобы иметь родителя без связи с модулями, вполне возможно, в Maven агрегация и наследование являются двумя различными механизмами, которые могут быть объединены или использованы полностью разделенным образом. То есть, в агрегаторном проекте могут быть модули, которые могут иметь других родителей. Дальше вопрос: почему так много профилей? Почему запуск/остановка пристани в двух разных профилях? Вам действительно нужно разделить его на два профиля? –