我在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) 我在STS中看到一个错误,我不确定如何调试它.搜索我只看到错误的模糊引用,没有解决方案.
错误是:
org.apache.maven.archiver.MavenArchiver.getManifest(org.apache.maven.project.MavenProject, org.apache.maven.archiver.MavenArchiveConfiguration)pom.xml/<maven projectName>第1行Maven配置问题
问题:任何人都可以就如何获得有关该问题的更多信息提出任何建议,以便进一步调试或任何可能的解决方案?
可能还有一些关于方法功能的更多背景信息.与该MavenArchiver.getManifest()方法关联的javadoc 不是非常详细,我看不到堆栈跟踪.我已经尝试过几次刷新和更新项目和相关项目,包括清除我当地的m2回购.
STS信息:
m2e信息:
我正在尝试使用Maven将我的测试类打包到一个带有依赖项的可执行jar中,但我很难做到这一点.
到目前为止这是我的pom.xml:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.c0deattack</groupId>
<artifactId>executable-tests</artifactId>
<version>1.0</version>
<packaging>jar</packaging>
<name>executable-tests</name>
<dependencies>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-java</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-junit</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.21.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<finalName>cucumber-tests</finalName>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>cucumber.cli.Main</mainClass>
</transformer>
</transformers>
<artifactSet>
<includes>
<include>info.cukes:*</include>
</includes>
</artifactSet>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>com.c0deattack</groupId>
<artifactId>executable-tests</artifactId>
<version>1.0</version>
<type>test-jar</type>
</dependency>
</dependencies>
</plugin> …Run Code Online (Sandbox Code Playgroud) 在Maven项目中,我在同一个包中有测试类和源类,但是在不同的物理位置.
.../src/main/java/package/** <-- application code
.../src/test/java/package/** <-- test code
Run Code Online (Sandbox Code Playgroud)
访问测试类中的源类没有问题,但是我想在main方法中运行一个测试运行器并访问它,AllTest.class以便我可以创建jar并执行我的测试.
public static void main(String[] args) {
// AllTest not found
Result result = JUnitCore.runClasses(AllTest.class);
for (Failure failure : result.getFailures()) {
System.out.println(failure.toString());
}
System.out.println(result.wasSuccessful());
}
Run Code Online (Sandbox Code Playgroud)
但它不起作用,因为我无法访问测试代码.我不明白,因为他们在同一个包中.
问题:如何从应用程序类访问测试类?或者,Maven如何打包包含测试类和执行测试的胖罐?
Maven JAR插件(版本3.0.2)不断抛出以下错误,即使是对jar目标的单个调用:
[错误]无法在项目测试中执行目标org.apache.maven.plugins:maven-jar-plugin:3.0.2:jar(默认):您必须使用分类器将补充工件附加到项目而不是替换它们. - > [帮助1]
这是一个(最小?)pom.xml,它演示了这个问题:
<project xmlns="http://maven.apache.org/POM/4.0.0">
<modelVersion>4.0.0</modelVersion>
<groupId>test</groupId>
<artifactId>test</artifactId>
<version>1.0.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
<executions>
<execution>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Run Code Online (Sandbox Code Playgroud)
调用只是mvn package.
jar和test-jar),也会出现问题.jar和test-jar.根据文档,classifier只需要在同一目标的多个调用中指定,并且对于test-jar我不打算更改的目标存在合理的默认值.
此外,问题似乎没有出现在JAR插件的2.x行上.
我错过了什么?有谁可以建议我做错了什么?
PS Maven版本是3.3.9.
我正在使用maven程序集插件来打包一个jar文件.但是当我运行时mvn package,maven总是触发[jar:jar {execution:default-jar}]来创建一个默认的jar文件.所以我将有2个jar文件(一个由程序集插件创建,另一个由maven jar创建,我不想创建).如何关闭执行:default-jar.
在我的pom.xml中,我正在使用:
<packaging>jar</packaging>.我不想改变它<packaging>pom</packaging>.
我正在尝试启动为 Spring Boot 项目构建的 jar 文件。首先我做了:
mvn clean package spring-boot:repackage
Run Code Online (Sandbox Code Playgroud)
然后我尝试启动 jar 文件,但出现以下错误:
线程“main”中出现异常 java.lang.UnsupportedClassVersionError:it/sysdata/helios_backend_admin/HeliosAdminBackendApplication 已由更新版本的 Java 运行时(类文件版本 55.0)编译,此版本的 Java 运行时仅识别类文件版本到 52.0 在 java.lang.ClassLoader.defineClass1(本机方法) 在 java.lang.ClassLoader.defineClass(未知来源) 在 java.security.SecureClassLoader.defineClass(未知来源) 在 java.net.URLClassLoader.defineClass(未知来源)在 java.net.URLClassLoader.access$100(未知来源) 在 java.net.URLClassLoader$1.run(未知来源) 在 java.net.URLClassLoader$1.run(未知来源) 在 java.security.AccessController.doPrivileged(本机方法) )在 java.net.URLClassLoader.findClass(未知来源) 在 java.lang.ClassLoader.loadClass(未知来源) 在 org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:93) 在 java.lang.ClassLoader .loadClass(来源不明)在org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:46)在org.springframework.boot.loader.Launcher.launch(Launcher.java:87)在org.springframework.boot .loader.Launcher.launch(Launcher.java:50) 在 org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)
我检查过,java版本到处都是11(至少从我所看到的)。这是 pom:
<?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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.2.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<groupId>it.sysdata</groupId>
<artifactId>helios_backend_admin</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>helios-admin-backend</name>
<packaging>jar</packaging>
<description>Helios Backend …Run Code Online (Sandbox Code Playgroud) 我是maven的新手,花了大约3天时间使用汇编插件生成zip文件,参考http://www.petrikainulainen.net/programming/tips-and-tricks/creating-a-runnable-binary-distribution-with- maven-assembly-plugin /我的项目是多模块的,所以我也提到使用Maven程序集插件管理多模块依赖项
我还有几个效率低下的问题.下面是assembly.xml(我从第一个链接继承)
<assembly>
<id>bin</id>
<!-- Generates a zip package containing the needed files -->
<formats>
<format>zip</format>
</formats>
<!-- Adds dependencies to zip package under lib directory -->
<dependencySets>
<dependencySet>
<!-- Project artifact is not copied under library directory since it is
added to the root directory of the zip package. -->
<useProjectArtifact>false</useProjectArtifact>
<outputDirectory>lib</outputDirectory>
<unpack>false</unpack>
</dependencySet>
</dependencySets>
<moduleSets>
<moduleSet>
<!-- Enable access to all projects in the current multimodule build! <useAllReactorProjects>true</useAllReactorProjects> -->
<!-- Now, select which …Run Code Online (Sandbox Code Playgroud) 我刚刚使用全新的Java9官方版本升级了我的Java8项目.
该项目使用Maven插件org.apache.maven.plugins:maven-jar-plugin2.6版.当我运行mvn clean install时,我现在得到以下异常:
ERROR] Failed to execute goal org.apache.maven.plugins:maven-jar-plugin:2.6:jar (default-jar) on project my-test-utils: Execution default-jar of goal org.apache.maven.plugins:maven-jar-plugin:2.6:jar failed: An API incompatibility was encountered while executing org.apache.maven.plugins:maven-jar-plugin:2.6:jar: java.lang.ExceptionInInitializerError: null
[ERROR] -----------------------------------------------------
[ERROR] realm = plugin>org.apache.maven.plugins:maven-jar-plugin:2.6
[ERROR] strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
[ERROR] urls[0] = file:/Users/jeanvaljean/.m2/repository/org/apache/maven/plugins/maven-jar-plugin/2.6/maven-jar-plugin-2.6.jar
[ERROR] urls[1] = file:/Users/jeanvaljean/.m2/repository/org/slf4j/slf4j-jdk14/1.5.6/slf4j-jdk14-1.5.6.jar
[ERROR] urls[2] = file:/Users/jeanvaljean/.m2/repository/org/slf4j/jcl-over-slf4j/1.5.6/jcl-over-slf4j-1.5.6.jar
[ERROR] urls[3] = file:/Users/jeanvaljean/.m2/repository/org/apache/maven/reporting/maven-reporting-api/2.2.1/maven-reporting-api-2.2.1.jar
[ERROR] urls[4] = file:/Users/jeanvaljean/.m2/repository/org/apache/maven/doxia/doxia-sink-api/1.1/doxia-sink-api-1.1.jar
[ERROR] urls[5] = file:/Users/jeanvaljean/.m2/repository/org/apache/maven/doxia/doxia-logging-api/1.1/doxia-logging-api-1.1.jar
[ERROR] urls[6] = file:/Users/jeanvaljean/.m2/repository/junit/junit/3.8.1/junit-3.8.1.jar
[ERROR] urls[7] = file:/Users/jeanvaljean/.m2/repository/commons-cli/commons-cli/1.2/commons-cli-1.2.jar
[ERROR] urls[8] = file:/Users/jeanvaljean/.m2/repository/org/codehaus/plexus/plexus-interactivity-api/1.0-alpha-4/plexus-interactivity-api-1.0-alpha-4.jar
[ERROR] urls[9] …Run Code Online (Sandbox Code Playgroud) 使用maven jar插件,我构建了两个jar:bar-1.0.0.jar和bar-1.0.0-client.jar.
实际上在我的POM中我有以下依赖:
<dependency>
<groupId>de.app.test</groupId>
<artifactId>foo</artifactId>
<version>1.0.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
此工件也存在于两个版本bar-1.0.0.jar和bar-1.0.0-client.jar中
我想使bar-1.0.0-client.jar依赖于foo-1.0.0-client.jar和bar-1.0.0.jar依赖于foo-1.0.0.jar.
================
- >第一个(错误的)解决方案:定义提供的范围,并在使用bar.jar时使用正确的foo包
- >第二个(长)解决方案:将"服务器"分类器添加到另一个jar中.使用不同的配置文件来构建foo工件并将分类器放在属性中.
<dependency>
<groupId>de.app.test</groupId>
<artifactId>foo</artifactId>
<version>1.0.0</version>
<classifier>${profile.classifier}<classifier>
</dependency>
Run Code Online (Sandbox Code Playgroud)
================
关于配置文件解决方案.
接口模块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/maven-v4_0_0.xsd">
<parent>
<groupId>com.app</groupId>
<artifactId>myapp-parent</artifactId>
<version>1.1.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.app</groupId>
<artifactId>myapp-interfaces</artifactId>
<version>1.1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>myapp Interfaces</name>
<profiles>
<profile>
<id>server</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<id>jar-server</id>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<classifier>server</classifier>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>client</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution> …Run Code Online (Sandbox Code Playgroud) maven-2 classification dependency-management maven-plugin maven-jar-plugin
maven-jar-plugin ×10
maven ×9
java ×5
maven-3 ×3
jar ×2
maven-2 ×2
dependencies ×1
eclipse ×1
java-9 ×1
m2e ×1
maven-plugin ×1
pom.xml ×1
spring-boot ×1
unit-testing ×1