我在Mac 10.6.6上使用Maven 3.0.3.我有一个JAR项目,当我运行命令"mvn clean install:install"时,我收到错误,
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-install-plugin:2.3.1:install (default-cli) on project StarTeamCollisionUtil: The packaging for this project did not assign a file to the build artifact -> [Help 1]
Run Code Online (Sandbox Code Playgroud)
这是什么意思,我该如何解决?下面是我的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>com.myco.starteam.util</groupId>
<artifactId>StarTeamCollisionUtil</artifactId>
<packaging>jar</packaging>
<name>StarTeam Collision Util</name>
<description>
The StarTeam Collision Utility provides developers and release engineers alike the ability to
compare files attached to a set of CRs to see if conflicts exist in the change set.
</description>
<version>1.0-SNAPSHOT</version> …
Run Code Online (Sandbox Code Playgroud) 由于两个依赖项之间存在一些不兼容性,我被迫制作了一个依赖项的着色版本.这意味着我的项目现在依赖于本地.jar文件.
我以前完全没问题,只需使用mvn install-file
将.jar安装到我的本地存储库,然后再运行mvn install
:
mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file -Dfile=lib/my-custom-jar-1.0.0.jar
mvn install
Run Code Online (Sandbox Code Playgroud)
但是,我的项目现在将位于一个自动构建服务器上,该服务器只会执行mvn clean install
其他操作.
通过寻找很长一段时间,我找到了几个解决方案,但没有一个是完美的.
我将在下面写下我发现的解决方案,但是我发布了这个问题,希望有人能更好地解决这个问题.
我已按照此处的指南将 JAR 文件安装到我的本地存储库中。
我运行以下命令:
mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file -Dfile=log4j-weblayout-0.0.1-SNAPSHOT.jar
Run Code Online (Sandbox Code Playgroud)
JAR 文件是使用 Maven 构建的,其中包含一个 POM 文件,其中列出了其依赖项。JAR 中的文件具有以下路径:
/META-INF/maven/in.ksharma/log4j-weblayout/pom.xml
Run Code Online (Sandbox Code Playgroud)
Maven 安装工件但不读取其 POM。它创建一个空的 POM 文件,该文件没有任何依赖信息:
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>in.ksharma</groupId>
<artifactId>log4j-weblayout</artifactId>
<version>0.0.1-SNAPSHOT</version>
<description>POM was created from install:install-file</description>
</project>
Run Code Online (Sandbox Code Playgroud)
如何确保 JAR 中的 POM 是已安装的那个?
编辑:
JAR 中各种文件的内容如下。
/META-INF/MANIFEST.MF
:
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: kshitiz
Created-By: Apache Maven 3.1.0
Build-Jdk: 1.8.0
Run Code Online (Sandbox Code Playgroud)
/META-INF/maven/in.ksharma/log4j-weblayout/pom.properties
:
#Generated by Maven
#Wed Oct 08 19:48:28 IST 2014
version=0.0.1-SNAPSHOT
groupId=in.ksharma
artifactId=log4j-weblayout
Run Code Online (Sandbox Code Playgroud)
/META-INF/maven/in.ksharma/log4j-weblayout/pom.xml
:
<project …
Run Code Online (Sandbox Code Playgroud) 我想将 Maven 或具有所有魔力的库嵌入到我的 Java 应用程序中。
要点:
他们是我想要执行的两项任务:
1/ 在本地存储库中
发布 jar 2/ 在私有企业存储库 (Nexus) 中发布 jar
所有必需的 jar 必须位于公共 Maven 存储库中
jar 应该与 Maven 版本无关(即不特定于 Maven 2 或 3)
如果可以,请提供您的回复的片段。
我想用maven-install-plugin安装几个罐到我当地的maven仓库.我的maven 3.2.1安装使用此插件的2.4版本,需要指定很多参数.我想使用需要较少参数的2.5版,如http://maven.apache.org/plugins/maven-install-plugin/usage.html中所述.如果我mvn install:install-file
从具有以下pom.xml文件的文件夹运行 ,则它使用版本2.5:
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5</version>
</plugin>
</plugins>
Run Code Online (Sandbox Code Playgroud)
否则,它仍然使用旧插件.如何强制Maven使用maven-install-plugin版本2.5(如果我从任何文件夹运行install-file)?
PS 如何安装第三方源和javadoc JAR?不包含答案.
I\xe2\x80\x99m 使用 Maven 3.2.3。我曾经能够在 WAR 项目上运行 \xe2\x80\x9cmvn clean install\xe2\x80\x9d ,并且 WAR 将安装到我的本地存储库。然而,我最近添加了一个配置,以便我的 WAR 可以就地构建(配置如下)。现在,当我跑步时
\n\nmvn clean install\n
Run Code Online (Sandbox Code Playgroud)\n\n我收到错误
\n\n[ERROR] Failed to execute goal org.apache.maven.plugins:maven-install-plugin:2.5.2:install (install) on project myproject: The packaging for this project did not assign a file to the build artifact -> [Help 1]\n
Run Code Online (Sandbox Code Playgroud)\n\n我该如何解决?我尝试将 maven-install-plugin 的 \xe2\x80\x9cinstall\xe2\x80\x9d 目标设为默认目标,但这并没有帮助。下面是我的 Maven 配置 \xe2\x80\xa6
\n\n <plugin>\n <artifactId>maven-clean-plugin</artifactId>\n <version>2.4.1</version>\n <configuration>\n <filesets>\n <fileset>\n <directory>${project.basedir}/src/main/webapp/WEB-INF/classes</directory>\n </fileset>\n <fileset>\n <directory>${project.basedir}/src/main/webapp/WEB-INF/lib</directory>\n </fileset>\n </filesets>\n </configuration>\n </plugin>\n <plugin>\n <groupId>org.apache.maven.plugins</groupId>\n <artifactId>maven-war-plugin</artifactId>\n <version>2.6</version>\n <configuration>\n <useCache>true</useCache>\n <workDirectory>/tmp/${project.artifactId}/war/work</workDirectory>\n </configuration>\n …
Run Code Online (Sandbox Code Playgroud) 生成校验和的功能似乎已从安装插件转移到部署插件(请参阅MDEPLOY-231)。似乎不再有参数来控制校验和的生成和部署,无论是在安装插件 3.0.0-M1中(“createChecksum”参数显然不再存在),还是在部署插件 3.0.0-中M1。
我假设现在默认情况下会激活校验和(请参阅此博客文章),但最终我的本地存储库和 Artifactory 中都没有任何校验和,并且我在日志中看不到任何与校验和相关的内容(运行 mvn deploy)。
这应该不重要,但也许是:我使用的是 https 传输,而不是 ssh。
这里是日志摘录:
[INFO] --- maven-install-plugin:3.0.0-M1:install (default-install) @ base-module ---
[INFO] Installing C:\data\src\s-libs\base\target\base-module-0.2.5-SNAPSHOT.jar to (...)
[INFO] Installing C:\data\src\s-libs\base\pom.xml to (...)
[INFO] Installing C:\data\src\s-libs\base\target\base-module-0.2.5-SNAPSHOT-sources.jar to (...)
[INFO]
[INFO] --- maven-deploy-plugin:3.0.0-M1:deploy (default-deploy) @ base-module ---
Downloading (...)
Uploading to psys_mvn: https://psys.ex1.de/artifactory/psys_mvn/de/ex1/psys/base-module/0.2.5-SNAPSHOT/base-module-0.2.5-20200311.190843-3.jar
(...)
Uploading to psys_mvn: https://psys.ex1.de/artifactory/psys_mvn/de/ex1/psys/base-module/0.2.5-SNAPSHOT/base-module-0.2.5-20200311.190843-3.pom
(...)
Uploading to psys_mvn: https://psys.ex1.de/artifactory/psys_mvn/de/ex1/psys/base-module/0.2.5-SNAPSHOT/base-module-0.2.5-20200311.190843-3-sources.jar
(...)
Uploading to psys_mvn: https://psys.ex1.de/artifactory/psys_mvn/de/ex1/psys/base-module/0.2.5-SNAPSHOT/maven-metadata.xml
(...)
Uploading to psys_mvn: https://psys.ex1.de/artifactory/psys_mvn/de/ex1/psys/base-module/maven-metadata.xml
(...)
Run Code Online (Sandbox Code Playgroud) 我有一个项目,我需要在Maven上安装一个库,以便我可以在所述项目上使用它.我遇到的问题是所说的库,比如说libA,它本身就有一个依赖,libB,它也是第三方的.
我已使用此代码将两者添加到本地存储库:
mvn install:install-file -Dfile=VerBDConverter.jar -DgroupId=verbdconverter
-DartifactId=verbdconverter -Dversion=1.00 -Dpackaging=jar -DgeneratePom=true
Run Code Online (Sandbox Code Playgroud)
对于lib 2也是如此.问题是,当我转到我的项目的pom并为libA添加<dependency>时,Maven没有选择libB.
问题:毕竟Maven应该得到libA的依赖,但事实并非如此.
可能重复:
如何使用命令行从maven构建中排除某些模块
我正在maven clean install
一个pom文件中运行一个包含几个模块(和子模块)的文件.我想知道是否可以运行maven构建但是在命令行上指定从构建中跳过一个模块(目前我从构建中手动排除它们,但我更喜欢通过命令行来完成它).
我知道使用-pl你可以有选择地选择项目,但我想要的是有选择地排除(以黑名单方式)一些.
我有一个 Maven 3.3 项目,主要输出是一个 war 文件:
<artifactId>pro</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
Run Code Online (Sandbox Code Playgroud)
我正在使用 maven 插件来构建一个 jar 文件,该文件进入target/pro-1.0-SNAPSHOT.jar
并起作用。
我想将此 jar 安装到本地 maven 存储库,因此我使用 maven install 插件来执行此操作:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
<configuration>
<classifier>jar</classifier>
<packaging>jar</packaging>
<file>target/pro-1.0-SNAPSHOT.jar</file>
</configuration>
<executions>
<execution>
<id>do-jar-install</id>
<phase>install</phase>
<goals>
<goal>install</goal>
</goals>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
整个构建工作正常,除了 jar 安装步骤是安装战争,而不是 jar。我如何覆盖它?
我在这里查看我可以使用的内容:http : //maven.apache.org/plugins/maven-install-plugin/examples/installing-secondary-artifacts.html
这是我构建的日志:
**
构建 jar:/Users/mike/code/workspace/pro/target/pro-1.0-SNAPSHOT.jar
[信息] --- maven-install-plugin:2.5.2:install (do-jar-install) @ pro
[信息] 将 /Users/mike/code/workspace/pro/target/pro-1.0-SNAPSHOT.jar 安装到 /Users/mike/.m2/repository/net/mikeski/pro/1.0-SNAPSHOT/pro-1.0-SNAPSHOT 。战争
请注意最后一行 - 它正在拿起罐子,但正在安装一场战争
我该如何解决?
根据要求,这里是 jar 插件配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId> …
Run Code Online (Sandbox Code Playgroud) 我有一个 Maven 插件,我尚未将其上传到中央存储库,但我想在我的项目中使用它。
什么有效
我可以像这样安装 Maven 插件:
git clone https://github.com/RudolfVonKrugstein/jinja-maven-plugin.git
cd jinja-maven-plugin
mvn install
Run Code Online (Sandbox Code Playgroud)
然后我可以使用像这样的 pom.xml 插件:
<?xml version="1.0" encoding="UTF-8"?>
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>de.wintercloud</groupId>
<artifactId>sample</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>de.wintercloud</groupId>
<artifactId>jinja-maven-plugin</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>de.wintercloud</groupId>
<artifactId>jinja-maven-plugin</artifactId>
<version>1.0</version>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>renderjinja</goal>
</goals>
</execution>
</executions>
<configuration>
<outputFile>out.txt</outputFile>
<templateFile>templ.jinja</templateFile>
<varFile>vars.yaml</varFile>
</configuration>
</plugin>
</plugins>
</build>
</project>
Run Code Online (Sandbox Code Playgroud)
以下是与编译相关的其他文件:
寺庙神社:
{{ Name }}
Run Code Online (Sandbox Code Playgroud)
vars.yaml:
Name: MyWonderfullName
Run Code Online (Sandbox Code Playgroud)
这有效:
> mvn compile
> cat out.txt
Run Code Online (Sandbox Code Playgroud)
我的名字
好的!
什么不起作用
现在我正在尝试将该插件作为 jar 提供给我的同事,以便他们可以简单地安装该 jar。想法是这样做:
git clone https://github.com/RudolfVonKrugstein/jinja-maven-plugin.git …
Run Code Online (Sandbox Code Playgroud) 我是maven的新手,无法弄明白.
我在我的pom.xml文件中有插件的这个配置,但看起来mvn不使用我的配置.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>2.3.1</version>
<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>
Run Code Online (Sandbox Code Playgroud)
当我注释掉这个插件时,我收到同样的错误.博客上有一些旧的讨论,认为maven忽略了执行中的配置.它还是个问题吗?我怎样才能让maven读取我的插件声明而不是别的?当我的依赖项被注释掉时它会运行什么?
错误
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-install- plugin:2.3.1:install-file (default-cli) on project core: The parameters 'file' for goal org.apache.maven.plugins:maven-install-plugin:2.3.1:install-file are missing or invalid -> [Help 1]
Run Code Online (Sandbox Code Playgroud) 我正在尝试将本地 jar 安装到我的 Maven 项目中,我正在从我的项目文件夹运行此命令:
mvn install:install-file -Dfile= ~/Downloads/<jar_path> -DgroupId=<groupId> -DartifactId=<artifactId> -Dversion=<version> -Dpackaging=jar -DgeneratePom=false
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
Failed to execute goal org.apache.maven.plugins:maven-install-plugin:2.4:install-file (default-cli) on project my-project: Error installing artifact 'my-artifact': Failed to install artifact groupId:artifactId:jar:version: /Users/my-project-path (Is a directory) -> [Help 1]
Run Code Online (Sandbox Code Playgroud) maven ×13
java ×5
maven-3 ×3
maven-2 ×2
pom.xml ×2
checksum ×1
eclipse ×1
jakarta-ee ×1
maven-plugin ×1