maven部署额外的jar文件
我有一个正在构建和部署在一个特定的方式(而不是一个jar文件)的神器。在部署过程中,建立一个战争文件。maven部署额外的jar文件
如何配置pom以使工件也作为jar文件部署到不同的位置?
您应该在pom文件的依赖关系中添加工件的相应依赖项。
例:
<dependency>
<groupId>org.apache.myfaces.core</groupId>
<artifactId>myfaces-api</artifactId>
<version>1.2.2</version>
<scope>compile</scope>
</dependency>
使一个神器依赖于它自己?我不明白这将如何影响部署。事实上,maven不喜欢所产生的循环引用。 – 2009-04-16 00:50:14
的“行家办法”是src/main/java
拆分为三个独立的模块,并有战争文件取决于这一点。
如果您完全拒绝该方法,则可以使用配置文件更改packaging
元素的内容。我不确定这是否可能。
您无法直接在配置文件中更改包装,但可以使包装依赖于属性并在配置文件中更改该属性。 – 2013-11-12 08:16:16
将它们分开是正确的选择。强制maven在同一模块中生成战争和罐子是可能的,但会导致你在路上遇到问题。
哪些问题?如果你需要一个jar文件,并且它是由该模块生成的,那么只要该jar文件总是由该模块生成,你应该没问题...(并且你依赖于该jar)。如果你有一个更具体的Maven问题,你想... – smaudet 2017-03-14 09:59:52
解决此问题的一种方法是让模块构建一个jar,然后使用assembly插件在该战争的WEB-INF/lib中使用jar构建war文件。我强烈建议不要这样做。你最好有一个jar项目和一个建立两个模块的父项目的战争项目。
This blog post及其评论有答案。
这三个插件配置将允许您在战争的同时构建/安装/部署jar版本。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<id>make-a-jar</id>
<phase>compile</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<executions>
<execution>
<phase>install</phase>
<goals>
<goal>install-file</goal>
</goals>
<configuration>
<packaging>jar</packaging>
<artifactId>${project.artifactId}</artifactId>
<groupId>${project.groupId}</groupId>
<version>${project.version}</version>
<file>
${project.build.directory}/${project.artifactId}-${project.version}.jar
</file>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<executions>
<execution>
<phase>deploy</phase>
<goals>
<goal>deploy-file</goal>
</goals>
<configuration>
<packaging>jar</packaging>
<generatePom>true</generatePom>
<url>${project.distributionManagement.repository.url}</url>
<artifactId>${project.artifactId}</artifactId>
<groupId>${project.groupId}</groupId>
<version>${project.version}</version>
<file>${project.build.directory}/${project.artifactId}-${project.version}.jar</file>
</configuration>
</execution>
</executions>
</plugin>
正如你所描述的那样使用maven-install-plugin解决了我在尝试使用android maven插件安装生成但未部署的jar文件时遇到的同样问题,包装设置为aar。我需要jar文件作为NetBeans IDE视觉问题的解决方案。 – Amin 2015-09-05 08:32:17
应该是不言而喻的,但请记住,如果您的项目使用不同的名称创建了jar(或者您在构建中设置了finalName),则需要根据$ {build.finalName} .jar进行相应调整,而不是上述内容。检查目标目录以查看实际生成的jar。 – smaudet 2017-03-14 09:59:16
的Maven deploy
装置部署伪影到Maven资源库,而不是应用服务器。
配置额外的JAR神器是这样的:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<id>make-a-jar</id>
<phase>compile</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
安装这个新的神器到您的项目:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>attach-artifacts</id>
<phase>package</phase>
<goals>
<goal>attach-artifact</goal>
</goals>
<configuration>
<artifacts>
<artifact>
<file>some file</file>
<type>jar</type>
</artifact>
</artifacts>
</configuration>
</execution>
</executions>
</plugin>
什么是“特殊的方式”,你正在构建和部署? “在部署过程中”是什么意思?你目前的POM的样本可能有助于使这个问题更清晰。 – 2009-04-16 04:12:23