当前位置: 首页 > 知识库问答 >
问题:

gradle到maven插件转换

楚帅
2023-03-14

如何为定义的以下 gradle 插件编写等效的 maven 插件?

/*
* Plugin to copy system properties from gradle JVM to testing JVM  
* Code was copied from gradle discussion froum:  
* http://forums.gradle.org/gradle/topics/passing_system_properties_to_test_task
*/  
class SystemPropertiesMappingPlugin implements Plugin{  
    public void apply(Project project){  
        project.tasks.withType(Test){ testTask ->  
            testTask.ext.mappedSystemProperties = []  
            doFirst{  
                mappedSystemProperties.each{mappedPropertyKey ->  
                    def systemPropertyValue = System.getProperty(mappedPropertyKey)  
                    if(systemPropertyValue){  
                        testTask.systemProperty(mappedPropertyKey, systemPropertyValue)  
                    }  
                }  
            }  
        }  
    }  
}

共有1个答案

乐正涵忍
2023-03-14

这真的取决于你到底想实现什么。

如果你想帮助编写一个maven插件,你必须阅读留档。

如果您想过滤Maven JVM传递给测试JVM的系统属性,除了扩展< code > Maven-surefire-plugin 插件并添加一个选项来完成这种映射,我看不到任何其他选项。(注意,默认情况下,Maven将其所有系统属性传递给测试JVM。)这肯定是可行的,但是也许你可以用maven已经提供的东西来实现你的目标。

您绝对可以使用以下方法将其他系统属性从Maven传递给您的测试JVM:

<plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-surefire-plugin</artifactId>
     <version>2.19</version>
     <configuration>
         <systemPropertyVariables>
              <propertyName>propertyValue</propertyName>
              <anotherProperty>${myMavenProperty}</buildDirectory>
         </systemPropertyVariables>
     </configuration>
</plugin>

如文档http://maven . Apache . org/surefire/maven-surefire-plugin/examples/system-properties . html。

在这种情况下,可以通过调用maven从命令行设置<code>另一个属性</code>的值

mvn test -DmyMavenProperty=theValueThatWillBePassedToTheTestJVMAsProperty_anotherProperty

您还可以使用Surefire<code>argline</code>将多个属性传递给JVM。例如

<plugin>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-surefire-plugin</artifactId>
     <version>2.19</version>
     <configuration>
         <argLine>${propertiesIWantToSetFromMvnCommandLine}</argLine>
     </configuration>
</plugin>

并执行maven如下

mvn test -DpropertiesIWantToSetFromMvnCommandLine="-Dfoo=bar -Dhello=ahoy"

在这种情况下,您将在您的测试JVM中看到属性< code>foo和< code>hello,分别具有值< code>bar和< code>ahoy。

 类似资料:
  • 我以一个新的gradle用户的身份创建gradle版本,但我过去曾与maven合作过。 我试图重现maven发布插件的动作: 将分支版本更改为发行号(在svn提交) 如您所见,我正在使用: Nexus OSS作为版本控制库 SVN作为scm Gradle(2.8) 我正试图通过这两个插件实现我的目标: > 将分支版本更改为发行号(在svn提交) 创建标签(位于svn) 将分支版本更改为新快照编号(

  • 目前,我为插件构建的结构有点混乱:我使用普通的IDEA项目文件在本地构建插件。当我将它推送到repo时,travis-ci正在构建它,它使用maven,因为travis要工作,它总是必须下载完整的想法源。 虽然这样做有效,但这有几个缺点: 我需要保持两个已构建的机制是最新的。这是 当新的IDEA版本发布时(每隔几周发布一次),我需要在maven和我的IDEA设置中更改SDK 添加新库、更改资源等时

  • 我在我的项目中使用了assembly maven插件,在单个zip文件中从文件夹中交付JAR、生成可执行文件和一些脚本。我怎么能和格拉德一起呢?我见过gradle交付和应用程序插件,但我无法正确配置它们。

  • 我正在通过gradle-intellij-plugin使用IntelliJ SDK编写一个插件。 我还将智能J插件的罐子添加到SDK类路径中 任何想法的原因?如何为这些专家/格拉德的东西引入支持?

  • 无法执行目标组织。fortasoft:GradleMaven插件:1.0.8:在project server上调用(默认cli):执行目标组织的默认cli。fortasoft:GradleMaven插件:1.0.8:invoke失败:无法从“11.0.2”确定java版本。

  • 我有gradle多模块项目配置与kotlin脚本。我想添加发布到maven存储库,我找到了maven发布插件。但它似乎跳过了为每个项目配置的版本: : : 输出: 文件可以。如何使gradle获得模块的正确版本?