小编A_D*_*teo的帖子

按组合而不是继承导入maven插件配置.可以使用构建扩展来完成吗?

按组合而不是继承导入maven插件配置.可以使用构建扩展来完成吗?

我已经使用maven超过3年了,并且有一个总是困扰我的缺点.是时候找到解决方案了.

问题:

我有一个带有3个孩子的"爸爸"maven模块:"男孩","女孩"和"孩子".这些孩子中的每一个都必须拥有自己独特的一组插件配置,用于默认的"干净安装"构建.我不想把这个配置放在孩子们的poms上.我宁愿把它放在我以后可以重复使用的地方.

我已尝试使用配置文件,但它不起作用 - 请在MNG-5127上查看我的评论和附加项目

我通过对daddy.zip项目进行以下更改找到了更好的解决方案:

1)在爸爸的pom上,用[phase] none [/ phase]的插件执行替换[profiles]

<build>
    ...
    <plugins>
        <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <executions>
                <execution>
                    <id>printboy</id>
                    <phase>none</phase>
                    <configuration>
                        <target>
                            <echo message="@@@@@@@@@@@@ HELLO! Iam a BOY project"/>
                        </target>
                    </configuration>
                    <goals>
                        <goal>run</goal>
                    </goals>
                </execution>
                <execution>
                    <id>printkid</id>
                    <phase>none</phase>
                    <configuration>
                        <target>
                            <echo message="@@@@@@@@@@@@ HELLO! Iam a KID project"/>
                        </target>
                    </configuration>
                    <goals>
                        <goal>run</goal>
                    </goals>
                </execution>
                <execution>
                    <id>printgirl</id>
                    <phase>none</phase>
                    <configuration>
                        <target>
                            <echo message="@@@@@@@@@@@@ HELLO! Iam a GIRL project"/>
                        </target>
                    </configuration>
                    <goals>
                        <goal>run</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
    ... …
Run Code Online (Sandbox Code Playgroud)

java maven-plugin maven maven-extension

13
推荐指数
1
解决办法
6509
查看次数

maven-failsafe-plugin失败并建立成功?

我想使用maven-failsafe-plugin来运行一些集成测试.如果任何测试失败,我希望Maven失败构建而不是BUILD SUCCESS.

Tests run: 103, Failures: 1, Errors: 0, Skipped: 26
[INFO] BUILD SUCCESS*
Run Code Online (Sandbox Code Playgroud)


我怎样才能配置它,那个构建不成功的是什么?

我的故障安全插件配置为:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-failsafe-plugin</artifactId>
    <version>${failsafe.version}</version>
    <configuration>
        <systemProperties>
            <CI_INTEGRATION_OVERRIDE_PATH>${basedir}/..</CI_INTEGRATION_OVERRIDE_PATH>
        </systemProperties>
        <includes>
            <include>**/integration/**/*.java</include>
        </includes>
        <excludes>
            <exclude>**/integration/**/*TestSuite.java</exclude>
        </excludes>
    </configuration>
    <executions>
        <execution>
            <id>integration-test</id>
            <goals>
                <goal>integration-test</goal>
                <goal>verify</goal>
            </goals>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

maven-plugin maven maven-failsafe-plugin

13
推荐指数
2
解决办法
9716
查看次数

在并行模式下使用maven-surefire-plugin时如何识别慢速单元测试?

为了管理/减少构建时间,我想确定哪些单元测试花费的时间最多 - 在并行测试环境中使用maven-surefire-plugin.

我们使用JUnit(4.10)进行单元测试.我们使用maven(2.2.1 - 我们使用的一些插件尚不支持maven 3)作为我们的主要构建工具,并使用maven-surefire-plugin(2.19)运行单元测试.

我们使用的是maven-surefire-plugin在并行模式,其中两个单独的方法在平行和单元测试类运行并行运行-这是非常重要的,因为它显著降低建设单位测试时间.的maven-surefire-plugin在构成.pom如下:

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.19</version>
    <configuration>
      <argLine>-Xmx2G -XX:MaxPermSize=1G -XX:-UseSplitVerifier</argLine>
      <failIfNoTests>false</failIfNoTests>
      <parallel>classesAndMethods</parallel>
      <useUnlimitedThreads>true</useUnlimitedThreads>
    </configuration>
  </plugin>
Run Code Online (Sandbox Code Playgroud)

但是,其中一个含义是在控制台输出中,每个JUnit测试类所用的时间是该类中所有方法的总时间.

例如,如果测试类有10个单元测试方法,每个测试方法需要1秒才能运行,那么测试类需要大约1秒才能运行(每个方法并行运行),但输出类似于:

运行com.package.QuickParallelTest测试运行:10,失败:0,错误:0,跳过:0,已过去时间:10.0秒 - 在com.package.QuickParallelTest中

这使得很难在控制台输出与另一个测试类中区分10个单元测试方法,其中9个几乎立即运行,1个运行几乎需要10秒.在这种情况下,测试类需要大约10秒才能运行(因为一个慢速测试方法),但maven-surefire-plugin控制台输出实际上是相同的:

运行com.package.SlowParallelTest测试运行:10,失败:0,错误:0,跳过:0,已过去时间:10.0秒 - 在com.package.SlowParallelTest

理想情况下,我希望花时间来指示测试类运行多长时间(并行),而不是单独运行方法所花费的总时间(就像单线程一样).

所以,我的问题是:

  1. 是否存在我缺少的maven-surefire-plugin设置,以便打印摘要显示每个类所花费的时间而不是方法的聚合?
  2. 这是一个已知的"错误"(或"功能")maven-surefire-plugin吗?(我检查了SureFire JIRA,但找不到这样的东西.)
  3. 是否有另一种方法可以确定哪些测试需要很长时间才能进行优化.

编辑:

我试过玩一些额外的配置设置.奇怪的是,将以下内容添加到配置中.pom似乎将控制台输出中经过的时间更改为运行测试类所花费的时间 - 但是,这(在我看来)这是违反直觉的,因为这些设置是默认设置:

    <configuration>
      ...
      <forkCount>1</forkCount>
      <reuseForks>true</reuseForks>
    </configuration>
Run Code Online (Sandbox Code Playgroud)

java junit maven-3 maven maven-surefire-plugin

11
推荐指数
1
解决办法
3364
查看次数

使用pom将Maven输出发送到控制台和日志文件

问题:在Eclipse中运行Maven时,如何将控制台输出发送到文件?

我想使用pom设置或maven插件来实现这一点.我不希望修改运行配置或maven的系统设置.

作为参考,我使用的是Windows 7,Eclipse Luna,Java 6,Maven 3.

eclipse pom.xml maven-3 maven eclipse-luna

11
推荐指数
2
解决办法
1万
查看次数

使用功能分支时避免maven存储库版本冲突

问题:如何处理maven多项目构建的功能分支?

Jenkins构建和部署这些分支以将开发人员的构建开销保持在最低限度,但开发和功能分支无法构建相同的maven版本,或者我们存在工件和源之间不匹配的风险.

我们有一个脚本来更改子poms中的父版本和root pom中的版本.虽然这会分隔maven空间中的分支,但在合并时会产生额外的工作.

我认为nexus pro staging功能可以帮助我们避免这个要求,并使每个功能分支使用特定的repo,我们在分支删除/合并后很容易丢弃.

再说一遍:如何处理多个分支和maven的问题?

nexus maven-3 maven git-flow jenkins

10
推荐指数
1
解决办法
4425
查看次数

如何在Maven中仅将pom文件部署到我的快照存储库?

我希望能够在没有主工件(JAR,WAR等)的情况下仅部署POM工件(文件),运行时mvn deploy版本是SNAPSHOT版本.

为什么?

我们有几个开发人员在开发多个Maven项目.我们有一个Hudson服务器,每个Maven项目和版本都有一个作业(例如foo-1.2,foo-1.3).每个作业都构建项目并将其部署到Nexus服务器(成功时).正在开发的Maven项目通过在版本中使用-SNAPSHOT后缀来标记.例如:1.2-SNAPSHOT,1.3-SNAPSHOT.

以下是由于此体系结构导致开发人员工作受损的示例场景.

假设两个Maven项目:foo-core和foo-webapp,均为1.2-SNAPSHOT版本.

  • 开发人员A正在研究foo-core,进行了一些更改并对其进行了编译.
  • 开发人员A继续工作,但在foo-webapp上.
  • 开发人员B开始工作并改变foo-core.它承诺将自己的工作推向SCM.
  • 哈德森是由SCM引发的; 构建foo-core并将其部署到Nexus中的快照存储库.
  • 开发人员A正在mvn installfoo-webapp上运行.Maven正在检查Nexus,并发现Nexus中有更新版本的foo-core.它下载它(填充了开发人员B的更改)而不是编译失败,因为开发人员A所做的更改不在位于本地存储库中的jar中.下载将覆盖开发人员A安装在那里的文件.

现有解决方案

我查看了maven-deploy-plugin,但是这个插件部署了附加到项目的所有工件.如果他们有办法配置要部署的工件,那就太好了.

问题:有没有办法解决这个问题而不依靠编写我自己的部署插件,基于maven-deploy-plugin?

maven maven-deploy-plugin

9
推荐指数
2
解决办法
2万
查看次数

将 JVM 参数传递给 maven surefire,以构建 Java 版本为条件?

有没有一种方法可以argLine仅在<jdk.version>1.7</jdk.version>为 Java 1.7配置时才将此配置传递给 maven-surefire 插件, 而不能在用户更改pom.xml为 Java 1.8配置时传递给 maven-surefire 插件?

原因是 Java 1.8没有 permgen 空间。

<argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>
Run Code Online (Sandbox Code Playgroud)

maven maven-surefire-plugin

9
推荐指数
2
解决办法
1万
查看次数

maven pom的存储库元素中启用(快照,发布)标记的用途是什么?

当指定库元素为什么我们需要<snapshot><enabled>false/true</enabled></snapshot>和 <releases/>呢?

它如何影响依赖的特定版本?(1.2.3-SNAPSHOT,1.2.3,1.2.3-RELEASE)

当存在多个存储库时,将搜索哪个存储库以获取工件?工件是如何解决的?

pom.xml maven-3 maven

9
推荐指数
1
解决办法
7112
查看次数

在Maven Archetype中更改包属性

我创建了一个Maven Archetype.我META-INF/maven/archetype-metadata.xml看起来像这样:

<archetype-descriptor xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-descriptor/1.0.0 http://maven.apache.org/xsd/archetype-descriptor-1.0.0.xsd">

  <fileSets>
    <fileSet filtered="true" packaged="true" encoding="UTF-8" >
      <directory>src/main/java</directory>
    </fileSet>
  </fileSets>

</archetype-descriptor>
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为它创建了一个Java源文件夹,并将我的类放在包中,由groupIdand和artifactId.

但是,我想修改他的包名.例如,如果我的groupId com.example和我的artifactId一样wvdz,那么我的包应该是:

com.example.wvdz.mypackage
Run Code Online (Sandbox Code Playgroud)

问题:我如何做到这一点?

maven-3 maven maven-archetype

9
推荐指数
1
解决办法
6024
查看次数

Maven 着色 jar 用作外部项目依赖项

我在我的项目中使用了 maven shade 插件来重新定位一个包下的所有依赖 jar 类,例如 org.shade.*

当我尝试在其他应用程序中使用该阴影 jar 作为 maven 依赖项时,它会拉取依赖项 jar。

我的期望是当 uber/shaded jar 作为 maven 依赖项包含时,它不应该拉任何其他依赖类 jar,因为这些类已经在 shaded jar 中重新打包。

uberjar maven-3 maven maven-shade-plugin

9
推荐指数
1
解决办法
5176
查看次数