问题:当Nexus上的重新部署被禁用时,我应该如何发布一个有两个独占配置文件的maven项目?
示例(已编辑):我有一个maven项目MyArtifact,在pom.xml
中有两个配置文件(P1和P2),它们会生成两个不同的EAR。每个配置文件配置maven-ear-plugin
以包括不同的模块并自动生成application.xml
。生成的工件是myArtifact-1.0-p1.ear
(2个war模块)和myArtifact-1.0-p2.ear
(3个war模块)。
问题1(重新部署到nexus):
问题2(maven-release-plugin):
当使用maven-release-plugin
发布多个概要文件时,maven要做很多事情(签出和标记CSM、更新pom版本、转向标记、提交CSM等)。至少必须为每个概要文件执行重新发布/重新标记既不高效也不实用。
简单的回答。这不可能.这个问题是基于配置文件的使用,这些配置文件在这种关系中是邪恶的。
解决这类问题的方法是创建一个Maven构建,它能够生成两个war文件,这两个文件是这个构建的结果。
我假设您对于不同的环境有不同的属性,如下所示:
.
|-- pom.xml
`-- src
|-- main
| |-- java
| |-- resources
| |-- environment
| | |-- test
| | | `-- database.properties
| | |-- qa
| | | `-- database.properties
| | `-- production
| | `-- database.properties
| `-- webapp
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
<id>test</id>
<formats>
<format>war</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
<dependencySet>
<unpack>true</unpack>
<useProjectArtifact>true</useProjectArtifact>
</dependencySet>
</dependencySets>
<fileSets>
<fileSet>
<outputDirectory>WEB-INF</outputDirectory>
<directory>${basedir}/src/main/environment/test/</directory>
<includes>
<include>**</include>
</includes>
</fileSet>
</fileSets>
</assembly>
和适当执行maven-assembly-plugin(在本例中),如下所示:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>test</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptors>
<descriptor>${project.basedir}/src/main/assembly/test.xml</descriptor>
</descriptors>
</configuration>
</execution>
<execution>
<id>qa</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptors>
<descriptor>${project.basedir}/src/main/assembly/qa.xml</descriptor>
</descriptors>
</configuration>
</execution>
<execution>
<id>production</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptors>
<descriptor>${project.basedir}/src/main/assembly/production.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
这将导致通过以下方式运行maven:
mvn package
生成三个不同的war文件,这些文件包含不同的属性文件或不同内容的文件。这是一个没有配置文件的解决方案,它可以很好地工作,并将部署三个不同的war文件,其名称如下:
我正在开发一个运行在Tomcat上的Java/JavaScript webapp。 我们正在使用IDEA,我已经设法同时为客户端和服务器代码设置了调试,这很棒。在手动运行Tomcat时,我确实重新部署了javascript的设置,但是我发现在通过IDEA运行Tomcat时,这并不起作用,因为它正在我的用户文件夹中的某个地方设置东西。 我本来要设置一个部署配置去那个文件夹,但是我看不到里面的任何ja
我试图在我的项目pom中使用配置文件。xml文件,用于控制将我的war文件部署到特定服务器。例如,我有一个本地配置文件和一个开发服务器配置文件。下面是我如何设置个人资料的 我打电话来 当我尝试此操作时,我可以看到,它不是尝试连接到我的配置中提供的IP地址,而是尝试连接到。我在本地包含用户名和密码的文件。 如果我然后添加选项,以获得更多信息,我可以在插件的调试输出中看到(强调部分已添加) 似乎没有遵
目前,我正在将多个war文件部署到一个Tomcat容器中。是否可以使用Spring Boot将所有war文件放入单个可部署的JAR中?我知道这对于一个应用程序是可能的,但是部署多个应用程序,这些应用程序曾经在单独的war文件中,这可以做到吗?
我有maven surefire插件pom.xml: 现在我希望maven只在部署目标上执行测试,因此: 当执行mvn部署测试应该运行 当执行mvn包或mvn安装时,测试不应该运行,因为目标在部署之前
null 现在,当我使用mvn从Jenkins内部运行maven release插件时,我仍然得到以下信息: 不显示错误 按预期创建SVN标记 然后在部署期间,它失败,出现上述错误 正如我提到的,快照部署经常发生并且没有错误,因此settings.xml、distributionManagement和Nexus权限似乎都是正常的。 我能够手动访问 我已经用和进行了检查,似乎一切正常 有什么想法吗?
问题内容: 我正在尝试根据某个Maven配置文件是否处于活动状态来使用数据库信息配置Spring配置文件。我已经看到了一些答案,但是很难将它们放在一起。 我有一个这样的Maven个人资料: 还有一个settings.xml文件,如下所示: 并在servlet-context.xml中: 我的问题基本上是,如何将Maven属性放入servlet- context.xml文件中?我需要一个.prope