如何为定义的以下 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)
}
}
}
}
}
}
这真的取决于你到底想实现什么。
如果你想帮助编写一个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获得模块的正确版本?