标签: multi-module

每个模块使用svn标签进行Maven发布设置

目标

多模块maven版本,每个模块带有标签

情况

假设基于Maven的Java项目的以下项目结构:

xx-parent
xx-moduleA
xx-moduleB
xx-moduleC/submodule1
xx-moduleC/submodule2
xx-moduleC/submodule3
Run Code Online (Sandbox Code Playgroud)

Subversion中的项目结构如下:

xx-parent/trunk
xx-moduleA/trunk
xx-moduleB/trunk
xx-moduleC/trunk/submodule1
xx-moduleC/trunk/submodule2
xx-moduleC/trunk/submodule3
Run Code Online (Sandbox Code Playgroud)

我的目标是在执行发布时为每个模块创建标记:

xx-parent/tags/xx-parent-1.0
xx-moduleA/tags/xx-moduleA-1.0
xx-moduleB/tags/xx-moduleB-1.0
xx-moduleC/tags/xx-moduleC-1.0
Run Code Online (Sandbox Code Playgroud)

过去,每个模块都是单独构建和发布的.随着项目规模的扩大(30个模块),构建版本的时间增加了.我想将项目更改为多模块设置以执行反应堆构建和发布.构建似乎不是问题,但每个模块创建标签是.

maven-release-plugin似乎坚持只为整个项目/发布制作一个标签.我正在寻找一种创建多个标签的方法,例如每个模块的标签.

到目前为止我尝试过的

  • 创建一个xx-all Subversion别名,检查所有子模块,以便我可以引用它们 <module>../xx-moduleB</module>
  • 启用commitByProject,它为每个模块提交,但不为每个模块标记.看到
  • 每个模块都有自己的<scm>元素pom.xml,但在执行反应器释放时不会使用它们.
  • mvn --batch-mode -DcommitPerProject=true -DautoVersionSubmodules=true -Drelease.version=1.0.6 release:prepare release:perform

问题

  • maven-release-plugin不会为每个模块创建一个svn标记
  • maven-release-plugin <scm>用无效的URL 覆盖标记,例如xx-parent标记下的嵌套"trunk"-tags

如何使用Maven发布流程,多模块布局设置此项目,并且每个模块仍然可以获得单独的标签?

参考

http://jira.codehaus.org/browse/MRELEASE-261 (已关闭)和MRELEASE-561(开放)

svn tagging maven multi-module maven-release-plugin

6
推荐指数
1
解决办法
1606
查看次数

关于创建Maven项目结构的建议 - 多个模块与多个项目?

请考虑以下企业应用程序分层示例:

  1. project-services - > POJO服务层
  2. project-web - > Web应用程序,依赖于"项目服务",部署为WAR
  3. project-web-services - > Web Services,取决于"项目服务",部署为单独的WAR,目前尚未通过Internet公开
  4. project-standalone - > Cron Jobs,取决于'项目服务'

在Maven中组织这个的正确方法是什么.我应该创建一个多模块maven项目吗?如果'project-services'是Maven模块,它是否可以与其他三个项目共享,每个项目都是一个独立的可部署单元?

在我以前的项目中,我只创建了4个不同的Maven项目,从来没有感到需要任何其他东西.

想验证是否有比以前更好的方式.

maven-2 maven multi-module

6
推荐指数
1
解决办法
2783
查看次数

多模块项目上的Maven站点无法解析依赖关系

我想将我的连续整合工作(Hudson)分成两个步骤.(因为一起构建和报告的运行时间太长.)在第一个工作中,我成功地使用"mvn package" 构建了我的多模块maven项目.然后我将我的工作区复制到另一个位置并尝试仅使用目标"site"和/或findbugs/checkstyle/pmd再次构建项目以创建报告.但这不起作用!Maven 无法解析子模块的依赖关系.(但是所有JAR都可以在其目标文件夹中使用.)

示例:我的结构如下所示:

    • 一个
    • C
    • d

项目C具有依赖项目B.

当我使用"mvn site"构建所有内容时,它会为项目A和B生成所有报告.但在项目C停止,并显示错误消息"无法解析项目B的依赖项".但是项目B已经用"mvn package"构建.即我可以在其目标文件夹中找到项目B的JAR文件.

有没有办法在没有"mvn install"的情况下解决子模块B的依赖关系?(我不想在我的ci服务器上执行此操作.我担心对于具有相同代码库的其他作业可能会有危险.)

更新08/20/12:

根文件夹的POM:

<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 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <name>Foo</name>
    <groupId>foo</groupId>
    <artifactId>bar</artifactId>
    <version>1.0</version>
    <packaging>pom</packaging>
    <modules>
        <module>parent</module>
    </modules>
</project>
Run Code Online (Sandbox Code Playgroud)

父POM:

<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 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <name>Foo</name>
    <groupId>foo</groupId>
    <artifactId>parent</artifactId>
    <version>1.0</version>
    <packaging>pom</packaging>
    <modules>
        <module>../bar-a</module>
        <module>../bar-b</module>
        <module>../bar-c</module>
        <module>../bar-d</module>
    </modules>
    [...]
    <reporting>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>findbugs-maven-plugin</artifactId>
                <version>2.5.1</version>
                [...]
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-pmd-plugin</artifactId>
                <version>2.7.1</version>
                [...]
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <version>2.9.1</version>            
                [...]
            </plugin>
        </plugins>
    </reporting>
</project> …
Run Code Online (Sandbox Code Playgroud)

continuous-integration hudson build maven multi-module

6
推荐指数
1
解决办法
3256
查看次数

Maven多模块项目和Jenkins

我有以下项目以扁平结构的方式组织:

parentProject
+-pom.xml

projectWeb <depends on libraryA and libraryB>
+-pom.xml

libraryA
+-pom.xml

libraryB
+-pom.xml
Run Code Online (Sandbox Code Playgroud)

parentProject中的pom.xml引用了其他模块,并用于继承和dependencyManagement,这里是一个片段:

<project>
    ....
    <modules>
        <module>../projectWeb</module>
        <module>../libraryA</module>
        <module>../libraryB</module>
    </modules>
    <dependencyManagement>
    ...
    </dependencyManagement>
    <build>
    ...
    </build>
    ....
</project>
Run Code Online (Sandbox Code Playgroud)

Jenkins中,我为每个项目都有一个maven作业,当我构建parentProject时,它工作正常,即.构建该modules部分中引用的每个项目.我遇到的问题是当我向SVN提交更改时libraryA,我希望在构建libraryA之后,重建projectWeb将要启动,但这并没有发生.谁知道我做错了什么?

提前致谢.

编辑

当我删除该modules部分时parentProject\pom.xml,它按预期工作,但我放弃了拥有父pom的聚合优势.

java maven multi-module jenkins

6
推荐指数
1
解决办法
8106
查看次数

具有多模块项目的Maven阶段订单?

原谅我.我是Maven的菜鸟.

这是我的maven项目目录:

project/
    pom.xml
    moduleA/
    moduleB/
        sub-moduleA/
        sub-moduleB/
        sub-moduleC/
    moduleC/
Run Code Online (Sandbox Code Playgroud)

当然,在每个模块和子模块中,它们都有自己的模块和子模块pom.xml.此外,在此示例中moduleB取决于moduleAmoduleA取决于moduleC.我知道在maven中它经历了多个阶段,但是它每次只需要一个阶段,或者每个阶段一个.眼下,只有三个阶段,我关心的是compile,packageinstall.

例如:

是否在订单1中执行此操作:

compile moduleC
compile moduleA
compile moduleB
package moduleC
package moduleA
package moduleB
install moduleC
install moduleA
install moduleB
Run Code Online (Sandbox Code Playgroud)

或者它是在第2顺序中执行的:

compile moduleC
package moduleC
install moduleC
compile moduleA
package moduleA
install moduleA
compile moduleB
package moduleB
install moduleB
Run Code Online (Sandbox Code Playgroud)

或者它是以完全不同的顺序进行的,还是我完全脱离了对maven的理解?

我正在运行Maven 2.2.1.谢谢!

maven-2 maven multi-module

6
推荐指数
1
解决办法
1736
查看次数

在多模块Java-Config Spring MVC应用程序中使用@ComponentScan的正确方法

我刚刚开始了一个新的春季项目,这次我想做"正确"的事情.在上一个项目中,由于多个@ComponentScan注释,我遇到了多个注册某些类的问题.(即所有服务类都注册了两次)

基本上我使用以下布局:

WebAppInitializer:

public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[] { RootConfig.class };
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[] { WebMvcConfig.class };
    }

    @Override
    protected String[] getServletMappings() {
        return new String[] { "/" };
    }

}
Run Code Online (Sandbox Code Playgroud)

RootConfig:

@Configuration
@ComponentScan
public class RootConfig {
    /* ... */
}
Run Code Online (Sandbox Code Playgroud)

WebMvcConfig:

@EnableWebMvc
@ComponentScan
public class WebMvcConfig extends WebMvcConfigurerAdapter {
    /* ... */
}
Run Code Online (Sandbox Code Playgroud)

DatabaseConfig:

@Configuration
@EnableJpaRepositories("my.base.class.path")
public …
Run Code Online (Sandbox Code Playgroud)

spring spring-mvc maven multi-module spring-java-config

6
推荐指数
1
解决办法
7506
查看次数

Jenkins/Maven因"无法在反应堆中找到所选项目"错误而建立死亡

我在Cloudbees构建服务上使用Jenkins,并且有一个多模块Maven项目.最近,我们从父pom中删除了一个项目,但是,当我们使用以下选项在Jenkins中运行构建时...

clean install -e -P qa -P cloudbees -DskipITs
Run Code Online (Sandbox Code Playgroud)

工件会自动存储到附加到我们帐户的Cloudbees快照存储库中.但是,构建最终会失败,并显示以下"无法在reactor中找到所选项目:org.mainco.subco:oldmodule"错误.有没有办法强制构建

[subco] $ mvn initialize -N
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building subco 76.0.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.841s
[INFO] Finished at: Fri Feb 27 21:59:22 UTC 2015
[INFO] Final Memory: 5M/115M
[INFO] ------------------------------------------------------------------------
Parsing POMs
Modules changed, recalculating dependency graph
maven31-agent.jar already up to date
maven31-interceptor.jar already up to date
maven3-interceptor-commons.jar already up to date
[subco] $ /opt/jdk/jdk1.7.0/bin/java -Dmaven.test.failure.ignore=false …
Run Code Online (Sandbox Code Playgroud)

reactor maven multi-module jenkins cloudbees

6
推荐指数
1
解决办法
4030
查看次数

来自具有相同名称的不同maven-modules的文件不能在使用maven assembly-plugin创建的jar文件中共存

如果有两个文件具有不同的内容但在两个不同的maven模块中具有相同的名称,那么它们都与maven assembly-plugin放在一个jar文件中,只有一个文件最终成为.jar文件的一部分.

问题:有没有办法确保在构建jar文件时将文件的内容组合到一个文件中?

我显然不想手动将信息放在一起,因为这是我试图通过在不同模块中拆分项目来避免的.

编辑:我有一个自定义的Assembly-Descriptor,我想保留,即使我开始使用另一个插件.这个描述符基本上排除了所有语言,但英语排除了资源和错误文本.

<id>jar-with-dependencies</id>
<formats>
    <format>jar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
    <dependencySet>
        <outputDirectory>/</outputDirectory>
        <useProjectArtifact>true</useProjectArtifact>
        <unpack>true</unpack>
        <scope>runtime</scope>
        <unpackOptions>
            <excludes>
                <exclude>**/*Resources_*</exclude>
                <exclude>**/*ErrorsText_*</exclude>
            </excludes>
        </unpackOptions>
    </dependencySet>
</dependencySets>
Run Code Online (Sandbox Code Playgroud)

java jar maven maven-assembly-plugin multi-module

6
推荐指数
1
解决办法
1825
查看次数

Maven POM文件:有关元素和部分排序的任何规则?

关于pom.xmlMaven文件:

  • 是否有任何具体规则适用于声明部分的排序?
  • 它对构建有什么重要性或影响吗?
  • 我可以遵循任何官方惯例吗?

dependency-management pom.xml maven-3 maven multi-module

6
推荐指数
1
解决办法
3070
查看次数

如何立即在IntelliJ IDEA ULTIMATE项目中提取所有模块?

我在IntelliJ中有一个多模块项目.每个模块都存储在一个单独的git存储库中.

我已经设置好了,所以我在IntelliJ中将每个标记为VCS root.

我可以使用IDE一次性拉出所有这些,还是应该使用命令行工具?目前我正逐一拉它们:

在此输入图像描述

java git intellij-idea multi-module

6
推荐指数
1
解决办法
2641
查看次数