如果您已经开发了一个开发时间很长并且包含大量功能的大型项目(即不是一个简单的项目),您是否选择将项目拆分为多个maven模块或者采用单模块方法?
例如,具有多模块结构,在运行maven命令时崩溃,如mvn gwt:eclipse(请参阅http://bit.ly/gs4Rmo).我想这对单模块GWT项目来说效果很好.并且可能存在如上所述的其他命令,其具有多模块结构的问题.
但是,多模块结构可以带来更快开发的好处,即如果将"服务器"与"客户端"模块分开,则可以单独编译业务逻辑(服务器)并将其打包到生成的Web存档中.编译GWT代码大约需要20秒,因此如果您只修改服务器软件包,从长远来看可以为您节省大量时间.
在使用多模块/单模块项目时,您遇到的其他情况如上所述?
谢谢!
我有一个Maven 2多模块项目,并希望确保所有内容都来自我当地的签出源.
我的多模块maven项目中有编译(和打包)问题.编译两个项目中的一个项目时出现问题,这两个项目是兄弟项目并包含在父项目中,另一个项目依赖于另一项目.为简单起见,我在pom.xml这里草绘项目文件夹结构和内容.
folder structure
-parent
|
|-child1
| |-src
| | |-main
| | |-java
| | |-Child1Class.java
| |-pom.xml
|
|-child2
| |-src
| | |-main
| | |-java
| | |-Child2Class.java
| |-pom.xml
|
|-pom.xml
Run Code Online (Sandbox Code Playgroud)
pom.xml of parent
<?xml version="1.0" encoding="UTF-8"?>
<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>
<groupId>com.example.project</groupId>
<artifactId>parent</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<name>parent</name>
<modules>
<module>child1</module>
<module>child2</module>
</modules>
</project>
Run Code Online (Sandbox Code Playgroud)
pom.xml of child1
<?xml version="1.0" encoding="UTF-8"?>
<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>
<parent>
<groupId>com.example.project</groupId>
<artifactId>parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<groupId>com.example.project</groupId>
<artifactId>child1</artifactId>
<version>1.0-SNAPSHOT</version> …Run Code Online (Sandbox Code Playgroud) 我花了很多时间,但我无法解决这个(配置)问题.
技术堆栈: Java(1.8),Springboot(starter-parent,starter-web),Maven,IntelliJ IDEA
描述:尝试创建一个由两个模块组成的多模块Java应用程序(最初):
问题:发送http请求时,Springboot不会从webgateway module => 404错误加载/扫描RestController
Github回购:https://github.com/Sorin-J/Greeter
项目配置:
Greeter
|
+ pom.xml (parent pom)
|
+ -- core
| |
| + ...
| |
| + pom.xml
|
+ -- webgateway
|
+ ...
|
+ pom.xml (depends on core pom.xml)
Run Code Online (Sandbox Code Playgroud)
父pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.bet.jbs</groupId>
<artifactId>Greeter</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>core</module>
<module>webgateway</module>
</modules>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId> …Run Code Online (Sandbox Code Playgroud) 我有一个 maven 多模块应用程序,其结构如下:
-parent_project
-actual_project
-jpaBase
Run Code Online (Sandbox Code Playgroud)
父项目是项目的 maven 聚合:actual_project 和 jpaBase(都是 spring boot 应用程序)
jpaBase 是 actual_project 的依赖项。
现在,当我执行 mvn 包时,出现单元测试错误:
发现多个@SpringBootConfiguration 注解类
因为 jpaBase 和 actual_project 都有用 @SpringBootConfiguration 注释的类。
如何确保 Spring 只考虑 actual_project 而不是 jpaBase 的 SpringBootConfiguration 类。
谢谢!
有没有办法设置 travis-ci 以构建不同语言的多个项目?
可以说我的回购是
AwesomeRepoThatDoestOneThingInDifferentLanguages
-cpp
-csharp
-python2
-python3
-java
-go
-ruby
-lua
-objectivec
Run Code Online (Sandbox Code Playgroud)
现在,我希望将 ci 应用于此。如果我只是将 .travis.yml 文件添加到我的 python2 项目中,travis-ci 会抱怨没有找到 .travis.yml,因为它在 repo 的根目录中寻找一个。那么,有没有一种方法可以将 .travis.yml 放在顶部,然后在我的每个子模块中进一步调用 travis.yml ?
我遇到了一些以前没有想到的Maven行为。例如,我们有一个多模块项目A:
A
|
--- api
--- impl
Run Code Online (Sandbox Code Playgroud)
impl模块使用api作为依赖项:
<dependency>
<groupId>examle</groupId>
<artifactId>api</artifactId>
</dependency>
Run Code Online (Sandbox Code Playgroud)
当我运行mvn clean test整个应用程序时,maven成功完成。当我为impl模块执行相同的命令时,它们的maven失败,并出现以下异常:
[ERROR] Failed to execute goal on project impl: Could not resolve
dependencies for project A:impl:jar:1.0-SNAPSHOT: Could not find artifact
A:api:jar:1.0-SNAPSHOT in maven-public
Run Code Online (Sandbox Code Playgroud)
因此,我的问题是maven如何解决未构建到jar文件中并推送到本地/远程存储库中的依赖项。在所有教程中,都说过maven在本地存储库中寻找依赖项,如果找不到,则在远程仓库中搜索,并且对于SNAPSHOTS几乎没有什么不同的行为。
但就我而言,我运行测试阶段,即使在目标存储库中也不构建jar文件
我正在尝试将一个功能添加到多模块 Gradle Java 项目中(如果您好奇的话,它是 spring 集成)。我已将该项目分叉到本地计算机上,并正在创建一个单独的 Gradle 项目,该项目引用此本地克隆的项目进行开发。
在我的新项目中,settings.gradle 文件如下所示:
include ":springint"
project(":springint").projectDir = file("/users/me/git/spring-integration")
rootProject.name = 'sprinttest'
Run Code Online (Sandbox Code Playgroud)
我从我的 build.gradle 中引用它:
dependencies {
compile project(":springint")
...
Run Code Online (Sandbox Code Playgroud)
问题是它似乎只考虑 /git/spring-integration 目录的 build.gradle 而不是它的 settings.gradle。这是一个问题,因为有很多子模块是通过其 settings.gradle 文件引用的,当我运行本地项目时,这些子模块不会被拾取。我得到的错误是:
- 出了什么问题:评估项目“:springint”时出现问题。在项目“:springint”中找不到路径为“spring-integration-test-support”的项目。
如果您查看 spring-integration,settings.gradle您会发现它动态地包含所有这些子项目:
rootProject.name = 'spring-integration'
rootDir.eachDir { dir ->
if (dir.name.startsWith('spring-integration-')) {
include ":${dir.name}"
}
}
Run Code Online (Sandbox Code Playgroud)
我认为 gradle 会在构建时自动合并此依赖项的 settings.gradle 但事实并非如此,因为这就是为什么找不到spring-integrationtest-support 的原因。我是否遗漏了某些内容,或者我应该从该项目的设置“重新创建”相同的逻辑到我自己的设置中?
我正在尝试将 dagger hilt 包含到我只有三个模块(app、frameworks_and_drivers、interface_adapters)的多模块项目中。我遵循了hilt文档https://developer.android.com/training/dependency-injection/hilt-android?hl=es-419,所以我结束向三个不同的模块添加相同的内容,我知道我们可以简化为只需添加一个。当我尝试重建项目时出现此错误:“错误:找不到符号导入 dagger.hilt.android.components.ApplicationComponent;”
出于某种原因,即使其他应用程序组件可用,应用程序组件也不可用。
也许如果你们中的一个人知道如何解决这个问题,请告诉我。谢谢!
我创建了 spring-boot gradle 多模块项目,其中包含 3 个模块:控制器、服务、存储库。主文件位于控制器模块中,名为 MySpringBootApplication。
我可以构建这个项目(使用 gradle build)并可以获得 jar 文件。但是在命令行中启动这个 jar 后,我遇到了下一个错误:
Error: Could not find or load main class com.epam.esm.config.MySpringBootApplication Caused by: java.lang.ClassNotFoundException: com.epam.esm.config.MySpringBootApplication.
Run Code Online (Sandbox Code Playgroud)
为了修复此错误,我在 main 中的MANIFEST.MF文件Main-Class中添加了属性,但此操作没有帮助。那么有人可以帮忙吗?build.gradle
主要构建.Gradle 文件
plugins {
id 'java'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'org.springframework.boot' version '2.4.3'
id 'application'
}
group = 'com.myproject'
version = 'snapshot-1.0.0'
repositories {
mavenCentral()
}
bootJar {
enabled = false
}
jar {
enabled = true
manifest {
attributes(
"Main-Class": "com.myproject.config.MySpringBootApplication")
}
} …Run Code Online (Sandbox Code Playgroud) multi-module ×10
java ×6
maven ×5
spring-boot ×3
gradle ×2
android ×1
dagger-hilt ×1
gwt ×1
multilingual ×1
pom.xml ×1
repository ×1
spring ×1
structure ×1
travis-ci ×1