我使用的是ServiceMix6.1.0(包含Karaf 3.0.5),我有一个Maven项目。我想使用karaf-maven-plugin
创建一个Karaf存档(.kar)。
我理解使用Karaf存档的目标:检索每个依赖项,以便可以在脱机环境中部署.kar。嗯...我以为我已经明白了...在创建.kar并部署它之后,我得到一个错误:
Error executing command: Can't install feature karafMavenPlugin/0.0.0:
Could not start bundle mvn:org.testng/testng/6.8.8 in feature(s) karafMavenPlugin-0.0.1-SNAPSHOT:
Unresolved constraint in bundle org.testng [371]:
Unable to resolve 371.0:
missing requirement [371.0] osgi.wiring.package; (osgi.wiring.package=org.junit)
下面是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>test</groupId>
<artifactId>karafMavenPlugin</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>kar</packaging>
<name>TestKarafMavenPlugin</name>
<build>
<plugins>
<!-- Plugin to create .kar -->
<plugin>
<groupId>org.apache.karaf.tooling</groupId>
<artifactId>karaf-maven-plugin</artifactId>
<version>3.0.5</version>
<extensions>true</extensions>
<configuration>
<aggregateFeatures>true</aggregateFeatures>
<includeTransitiveDependency>true</includeTransitiveDependency>
</configuration>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<!--This plugin's configuration is used to store Eclipse m2e settings
only. It has no influence on the Maven build itself. -->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>
org.apache.karaf.tooling
</groupId>
<artifactId>
karaf-maven-plugin
</artifactId>
<versionRange>
[3.0.5,)
</versionRange>
<goals>
<goal>
features-generate-descriptor
</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore></ignore>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
<dependencies>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.8.8</version>
</dependency>
</dependencies>
</project>
下面是生成的feature.xml
:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<features xmlns="http://karaf.apache.org/xmlns/features/v1.2.1" name="karafMavenPlugin">
<feature name="karafMavenPlugin" version="0.0.1-SNAPSHOT" description="TestKarafMavenPlugin">
<bundle>mvn:org.testng/testng/6.8.8</bundle>
<bundle>wrap:mvn:org.beanshell/bsh/2.0b4</bundle>
<bundle>mvn:com.beust/jcommander/1.27</bundle>
</feature>
</features>
为什么没有检索到JUnit依赖项?
<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">
<modelVersion>4.0.0</modelVersion>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<packaging>jar</packaging>
<name>TestNG</name>
<version>6.8.8</version>
<description>TestNG is a testing framework.</description>
<url>http://testng.org</url>
<dependencies>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant</artifactId>
<version>1.7.0</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.beanshell</groupId>
<artifactId>bsh</artifactId>
<version>2.0b4</version>
<!--
<scope>provided</scope>
-->
</dependency>
<dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.beust</groupId>
<artifactId>jcommander</artifactId>
<version>1.27</version>
</dependency>
<dependency>
<groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId>
<version>1.12</version>
<optional>true</optional>
</dependency>
</dependencies>
</project>
所以...我错了吗?是一种预期的行为吗?如果是这样的话,是否有一种方法可以指示karaf-maven-plugin
下载每个依赖项?
'provided'不具有可传递性:当通过api请求maven依赖项时,不会检索所提供的依赖项。
我正在使用maven shade插件创建一个胖罐子,其中也包括一些弹性城堡罐子。但这造成了问题,因为Bouncy Castle的未签名版本。
我正试图让maven下载所有的依赖项(编译、测试、插件等)。)这样我就可以避免让我们的dockerized构建浪费不必要的时间一遍又一遍地下载它们。 我们已经对maven build进行了dockerized,这样我们就可以从jenkins运行它,而无需在jenkins机器上安装大量构建特定的依赖项(Java、redis、maven依赖项等)。我们的构建依赖于增量docker构建,它只执行实际需要
我已经创建了一个构建。war文件的非常简单的Maven项目。Maven Version3.2.3,Java Version1.7.0_67。pom.xml文件就是这个要点。 如果我运行,那么项目构建良好。但是,如果首先下载所有具有和的依赖项,然后运行进行脱机构建,则会出现如下错误。 我从两种方式创建的。m2/repository文件夹不同,使用依赖插件创建的文件夹缺少许多文件,其中大多数与Plex
我正在使用Gradle插件0.9和Android Studio 0.5.4。 我有一个Android库项目,只有一个依赖项。jar位于/libs文件夹中。当我在Proguard激活的情况下运行AssemblerRelease任务时,生成的AAR具有以下结构: 我的图书馆 问题是myJar。jar类被合并到类中。jar by Proguard(当我在没有Proguard的情况下运行时,它不会发生)。
本文向大家介绍Apache Maven 创建具有项目所有依赖项的.jar文件,包括了Apache Maven 创建具有项目所有依赖项的.jar文件的使用技巧和注意事项,需要的朋友参考一下 示例 要创建包含所有依赖项的JAR,可以使用内置描述符格式jar-with-dependencies。以下示例package使用此内置描述符并声明的主类来配置绑定到该阶段的Assembly Plugin的执行co
在实际使用之前,我试图从maven项目下载所有插件依赖项。 我试过跑步: 这成功地下载了它的插件及其部分依赖项。例如,对于exec插件,我得到: 但是,当您实际使用插件时,例如: 事实证明,它的依赖项尚未完全下载。 这是出乎意料的,因为根据文档,excludeTransitive属性在默认情况下为false(显式设置它没有帮助)。在我看来,它只是从定义的插件下载了一个级别的可传递依赖项。 有没有办