我有一个有4个子项目的maven项目,让我们假设下面的结构:
Main
|- core (jar)
|- webapp1 (war)
|- webapp2 (war)
|- webapp3 (war)
三个webapp子项目依赖于核心子项目。所以poms是这样的:
Main(pom.xml):
<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>myGroup</groupId>
<artifactId>MyArtifact</artifactId>
<version>1.0</version>
<packaging>pom</packaging>
<properties>
</properties>
<repositories>
</repositories>
<modules>
<module>core</module>
<module>webapp1</module>
<module>webapp2</module>
<module>webapp3</module>
</modules>
...
</project>
<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>
<artifactId>core</artifactId>
<packaging>jar</packaging>
<parent>
<groupId>MyGroup</groupId>
<artifactId>MyArtifact</artifactId>
<version>1.0</version>
</parent>
...
</project>
web应用程序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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>webapp1</artifactId>
<version>1.1.0-A1</version>
<packaging>war</packaging>
<parent>
<groupId>MyGroup</groupId>
<artifactId>MyArtifact</artifactId>
<version>1.0</version>
</parent>
<dependencies>
<dependency>
<groupId>MyGroup</groupId>
<artifactId>core</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
...
</project>
当我在项目的根文件夹上执行“MVN包”并部署生成的WAR时,几个月来一切都很好。
但是现在我想部署一个Ear而不是单独的War文件,所以我添加了一个名为EARProject的子项目。使用以下pom.xml:
<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>
<artifactId>earproject</artifactId>
<packaging>ear</packaging>
<parent>
<groupId>MyGroup</groupId>
<artifactId>MyArtifact</artifactId>
<version>1.0</version>
</parent>
<build>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-ear-plugin</artifactId>
<version>2.10.1</version>
<configuration>
<finalName>EarName</finalName>
<version>5</version>
<generatedDescriptorLocation>${basedir}/src/main/applicatio/META-INF</generatedDescriptorLocation>
<modules>
<webModule>
<groupId>MyGroup</groupId>
<artifactId>webapp1</artifactId>
<bundleFileName>webapp1.war</bundleFileName>
<contextRoot>/webapp1</contextRoot>
</webModule>
<webModule>
<groupId>MyGroup</groupId>
<artifactId>webapp2</artifactId>
<bundleFileName>webapp2.war</bundleFileName>
<contextRoot>/webapp2</contextRoot>
</webModule>
<webModule>
<groupId>MyGroup</groupId>
<artifactId>webapp3</artifactId>
<bundleFileName>webapp3.war</bundleFileName>
<contextRoot>/webapp3</contextRoot>
</webModule>
</modules>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
<dependencies>
<dependency>
<groupId>MyGroup</groupId>
<artifactId>core</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>MyGroup</groupId>
<artifactId>webapp1</artifactId>
<type>war</type>
<version>1.0</version>
</dependency>
<dependency>
<groupId>MyGroup</groupId>
<artifactId>webapp2</artifactId>
<type>war</type>
<version>1.0</version>
</dependency>
<dependency>
<groupId>MyGroup</groupId>
<artifactId>webapp3</artifactId>
<type>war</type>
<version>1.0</version>
</dependency>
</dependencies>
</project>
在此配置中,当我运行“MVN Clean”和“MVN Package”时,会生成ear文件,但ear文件中的war文件包含无效的旧版本的core.jar。如果我检查webapp项目上的目标目录,War文件有一个正确的core.jar版本。EAR打包似乎使用了我的mvn存储库中的旧版本的jar,但我不知道为什么,因为maven在单独的war文件中放置了最近创建的core.jar。
为什么会这样?我需要在earProject的pom.xml上指定更多的内容吗?
我认为你描述的问题很容易解决。从外观上看,Maven ear plugin从存储库中获取核心jar文件,而不是新编译的jar文件。我不知道这个插件行为的原因,但我很久以前就发现了这个问题。
您应该使用以下命令在本地存储库中安装jar库
mvn clean install
而不是
mvn package
我已经使用VsCode从Java项目中创建了一个Jar文件,并且在我的pc中工作得很好。 我试着用一台没有Java的笔记本电脑来运行这样的Jar;所以我刚刚下载并安装了最新版本的JRE(https://www.java.com/es/download/ie_manual.jsp)因为这是运行的唯一要求。罐子 但是,当我尝试在这个Separate笔记本电脑中运行Jar时,我收到一条毫无意义的错误消息
和用户余额相关的信息,余额单位都是按照 CNY 的「分」作为单位。 接口不给现实数字,而是给出以 CNY 的「分」单位的数字,并在「启动者」中提供了显示转换比例,单位为百分比(%) 钱包信息 钱包信息提供进入钱包页面所需的附加信息记录接口。 在未来开发中,一些信息可能会被移动到「启动者」中。 GET /wallet 响应 Status: 200 OK { "labels":[ // 充值选
问题内容: 我刚刚将软件包的新版本上传到PyPi(1.2.1.0-r4):我可以下载egg文件并使用easy_install进行安装,并且该版本可以正确检出。但是,当我尝试使用pip进行安装时,它将安装版本1.1.0.0。即使我明确指定要使用的版本,也会收到以下消息:,但我不明白为什么。 我仔细检查并确认1.2.1上的版本字符串大于1.1.0上的版本字符串,如下所示: 那么,为什么要选择安装1.1
我有一个由3个模块组成的分级项目: (无依赖项) (依赖于) (取决于两个模块)
本文向大家介绍java项目jar包与jdk的版本不兼容的问题解决,包括了java项目jar包与jdk的版本不兼容的问题解决的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了java项目jar包与jdk的版本不兼容的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在我们搭建框架或者引入jar包是,总是会因为版本不统一导致版本兼容问
我试图在我的“Java”gradle项目中包含一个本地jar文件。我已经在Project的“main/resource”文件夹中添加了jar文件。在Build.Gradle中添加了以下行:-