Tycho pomless-为单个模块/父项目配置/阻止插件执行

问题描述

最近,我开始着眼于使用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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...