问题描述
最近,我开始着眼于使用Tycho通过Maven构建Eclipse插件。目前,我使用Tycho-less pom-extension和一个父POM来配置构建。
现在我意识到,在父POM中配置的插件不仅可以在构建单个模块的过程中执行,而且还可以在父项目(由父POM定义)本身的上下文中执行。
使用xtend-maven-plugin
的MWE的父pom的build部分:
<build>
<plugins>
<plugin>
<groupId>org.eclipse.xtend</groupId>
<artifactId>xtend-maven-plugin</artifactId>
<version>${xtext.version}</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<outputDirectory>src/main/xtend-gen</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-maven-plugin</artifactId>
<version>${tycho.version}</version>
<extensions>true</extensions>
</plugin>
</plugins>
</build>
相应的mvn compile
输出(相关的INFO部分标记为标签):
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] parent-project [pom]
[INFO] [bundle] TestTycho [eclipse-plugin]
[INFO]
[INFO] -----------------------< POMless:parent-project >-----------------------
[INFO] Building parent-project 0.0.1-SNAPSHOT [1/2]
[INFO] --------------------------------[ pom ]---------------------------------
[INFO]
<[INFO]> --- xtend-maven-plugin:2.23.0:compile (default) @ parent-project ---
<[INFO]> skip compiling sources because the configured directory '[D:\ParentProjectPomless\src\main\java]' does not exist.
[INFO]
[INFO] -------------------------< POMless:TestTycho >--------------------------
[INFO] Building [bundle] TestTycho 1.0.0-SNAPSHOT [2/2]
[INFO] ---------------------------[ eclipse-plugin ]---------------------------
[INFO]
[INFO] --- tycho-packaging-plugin:2.0.0:build-qualifier (default-build-qualifier) @ TestTycho ---
[INFO] The project's Osgi version is 1.0.0.202009290827
[INFO]
[INFO] --- tycho-packaging-plugin:2.0.0:validate-id (default-validate-id) @ TestTycho ---
[INFO]
[INFO] --- tycho-packaging-plugin:2.0.0:validate-version (default-validate-version) @ TestTycho ---
[INFO]
[INFO] --- xtend-maven-plugin:2.23.0:compile (default) @ TestTycho ---
[INFO]
[INFO] --- maven-resources-plugin:2.4.3:resources (default-resources) @ TestTycho ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory D:\ParentProjectPomless\TestTycho\src\main\resources
[INFO]
[INFO] --- tycho-compiler-plugin:2.0.0:compile (default-compile) @ TestTycho ---
[INFO] Compiling 1 source file to D:\ParentProjectPomless\TestTycho\target\classes
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] parent-project 0.0.1-SNAPSHOT ...................... SUCCESS [ 2.317 s]
[INFO] [bundle] TestTycho 1.0.0-SNAPSHOT .................. SUCCESS [ 2.219 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
我的问题是,您能以某种方式在Tycho无pom环境中控制将哪些插件应用于父POM中指定的哪些模块吗?还是有可能在构建过程中完全忽略父项目,而仅使用父POM作为配置用于构建单个模块的插件的方法?
通常,我将使用pluginManagement或skip选项以及各个POM来实现我的目标,如下所示。
使用pluginManagement构建父POM的部分:
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.eclipse.xtend</groupId>
<artifactId>xtend-maven-plugin</artifactId>
<version>${xtext.version}</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
</goals>
<configuration>
<outputDirectory>src/main/xtend-gen</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
<plugins>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-maven-plugin</artifactId>
<version>${tycho.version}</version>
<extensions>true</extensions>
</plugin>
</plugins>
</build>
模块的单个POM(Eclipse插件):
<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>withPOM</groupId>
<artifactId>parent-project</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>TestTycho</groupId>
<artifactId>TestTycho</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
<build>
<plugins>
<plugin>
<groupId>org.eclipse.xtend</groupId>
<artifactId>xtend-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
父项目上未调用mvn compile
的相应输出,xtend-maven-plugin
:
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] parent-project [pom]
[INFO] TestTycho [eclipse-plugin]
[INFO]
[INFO] -----------------------< withPOM:parent-project >-----------------------
[INFO] Building parent-project 0.0.1-SNAPSHOT [1/2]
[INFO] --------------------------------[ pom ]---------------------------------
[INFO]
[INFO] ------------------------< TestTycho:TestTycho >-------------------------
[INFO] Building TestTycho 1.0.0-SNAPSHOT [2/2]
[INFO] ---------------------------[ eclipse-plugin ]---------------------------
[INFO]
[INFO] --- tycho-packaging-plugin:2.0.0:build-qualifier (default-build-qualifier) @ TestTycho ---
[INFO] The project's Osgi version is 1.0.0.202009290838
[INFO]
[INFO] --- tycho-packaging-plugin:2.0.0:validate-id (default-validate-id) @ TestTycho ---
[INFO]
[INFO] --- tycho-packaging-plugin:2.0.0:validate-version (default-validate-version) @ TestTycho ---
[INFO]
[INFO] --- xtend-maven-plugin:2.23.0:compile (default) @ TestTycho ---
[INFO]
[INFO] --- maven-resources-plugin:2.4.3:resources (default-resources) @ TestTycho ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory D:\ParentProject\TestTycho\src\main\resources
[INFO]
[INFO] --- tycho-compiler-plugin:2.0.0:compile (default-compile) @ TestTycho ---
[INFO] Compiling 1 source file to D:\ParentProject\TestTycho\target\classes
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] parent-project 0.0.1-SNAPSHOT ...................... SUCCESS [ 0.002 s]
[INFO] TestTycho 1.0.0-SNAPSHOT ........................... SUCCESS [ 4.458 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
由于在Tycho无pom环境中单个模块并不意味着具有POM,所以我想知道是否还有其他选择。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)