我正试着做一个包含所有项目的胖uber罐子。如果我做了“MVN包”,我得到一个uber jar下的“blah”项目标签文件夹。(blah项目有主类。)uber jar包含所有项目(作为文件夹而不是jar),但当我运行它时,它似乎无法识别feature1和feature2项目。
<plugins>
<!-- download source code in Eclipse, best practice -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<version>2.10</version>
<configuration>
<downloadSources>true</downloadSources>
<downloadJavadocs>false</downloadJavadocs>
</configuration>
</plugin>
<!-- Set a compiler level -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<!-- Maven Shade Plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.1.1</version>
<executions>
<!-- Run shade goal on package phase -->
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<!-- add Main-Class to manifest file -->
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.a.blah.main</mainClass>
</transformer>
</transformers>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
<modules>
<module>blahtask</module>
<module>feature1</module>
<module>feature2</module>
<module>blahmessaging</module>
<module>blah</module>
</modules>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.39</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.a.blah</groupId>
<artifactId>blahtask</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.a.blah</groupId>
<artifactId>blahmessaging</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.a.fs</groupId>
<artifactId>feature1</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.a.fs</groupId>
<artifactId>feature2</artifactId>
<version>1.0-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
我在上面添加了feature1和feature2的依赖项,以便它们在uber jar文件中。这错了吗?附注。blahmessaging、feature1、&feature2使用BlahTask中的类/函数。
很难找到包含多个项目的maven-shade-plugin示例。很难找到他们的poms文件应该是怎样的,父子关系应该是怎样的结构。
原来是服务加载程序的问题...我手动添加了feature1和feature2项目中用于serviceloader的类名。
如果您正在使用serviceloader,下面是我所做的。
feature1/src/main/resources/meta-inf/services/“某些超级类”feature2/src/main/resources/meta-inf/services/“某些超级类”
如果使用文本编辑器打开这两个,则ServiceLoader需要的每一个都有一个子类名。我将它们复制并添加到JAR中的“某些超类”文件中。
Maven插件及其在父pom中定义的依赖项,我不希望我的子pom包含该插件依赖项。 例如,如果有1个父级和100个子级,99个使用该插件并希望在一个子级中排除该插件。 我们如何才能实现这一目标?
当我使用mvn install构建工件时,我看到JAR在我的.m2文件夹中构建,但是Project.version没有替换为实际版本,即1.0-Snapshot。 > 每个工件的.m2存储库中的父pom和/或子pom是否具有指定的版本,或者是否为Project.version 我是否应该在父POM中指定Project.Version作为属性。maven文档说明Project.version可由De
当前情景: 父pom有一个distributionManagement部分,其中定义了两个存储库(发布和快照);请参阅以下内容: 父pom: 基于同一pom中指定的“版本”,maven会自动识别是在发布中部署工件还是在nexus中部署快照存储库。(我相信这是使用版本是否有任何“-SNAPSHOT”后缀来完成的。) 有一个子pom定义了一些部署文件目标;请参阅以下内容: 儿童pom: 问题: 正如您
是否有一个具体的推荐方法将spring启动的父pom包含到已经有一个必需的父pom的项目中? 对于需要从组织父级扩展的项目,您有什么建议(这是非常常见的,甚至是许多/大多数项目发布到Maven central,这取决于它们来自的feeder Repo)。大部分构建内容都与创建可执行JAR相关(例如,运行嵌入式Tomcat/Jetty)。有一些方法可以对事物进行结构化,这样您就可以获得所有的依赖关系
我有一个带有子pom B、C和D的父pom A,在B、C和D中,我有相同类型的依赖项。 ie父Pom 儿童Pom 到目前为止,我已经尝试过编辑插件surefire,当试图排除子pom的测试范围时,它不起作用。 我的问题是,是否有一种方法可以将概要文件添加到父pom中,以排除所有子pom的类型测试jar的所有依赖项。谢谢
我是使用maven和jenkins的新手。我正在尝试从父pom继承到子pom的依赖关系,它显示以下错误: 这是我的父母POM: 这是我的孩子波姆: 这是我如何尝试从父POM继承子POM中的依赖关系: 如果我在子POM中放置这些相同的依赖项,它会完美地工作。我使用jenkins在nexus中进行安装和部署。我使用的是maven-3.3.9。在jenkins中,我阅读了git中两个不同maven项目中