我正在使用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>.
我有一个版本0.0.1-SNAPSHOT的项目,当我们通过TeamCity构建它时,我们还得到一个build.vcs.number属性,这是触发构建的Subversion修订版.
在我们的程序集中,我们创建一个名为foo-distribution-0.0.1-SNAPSHOT.zip的zip文件,但我想知道是否有一种方法可以将build.vcs.number属性插入到工件名称中以给foo- distribution-0.0.1.12345-SNAPSHOT.zip?
是否有内置属性只是版本号的数字部分,或者其他一些分割-SNAPSHOT部分的方法?
编辑:我已经尝试将pom.xml版本设置为$ {my.version} -SNAPSHOT,然后在属性中定义my.version - 这适用于除了Maven Release Plugin之外的任何情况,它抱怨它无法解析版本(可以理解,它不能自动猜测下一个开发版本).
我想将我在JAR中的源代码与所有依赖项结合起来,并将其与其他文件一起打包成一个zip文件.我能够创建一个包含所有依赖项的Jar以及ZIP文件,但我无法将两者结合起来.
我最终想要zip文件中的以下目录结构:
装载机/斌/ shellscript.sh
装载器/ LIB /罐与 - dependencies.jar
装载器/应用程序的名字/配置/ config.xml中
这是我的pom文件的摘录:
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>fully.qualified.MainClass</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<descriptors>
<descriptor>src/main/assembly/assembly.xml</descriptor>
</descriptors>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
这是我装配的摘录
<assembly>
<id>bin</id>
<!-- Specifies that our binary distribution is a zip package -->
<formats>
<format>zip</format>
</formats>
<baseDirectory>SpreadsheetLoaderApp</baseDirectory>
<fileSets>
<fileSet>
<directory>corporatebondpurchases</directory>
<outputDirectory>${basedir}/corporatebondpurchases/config</outputDirectory>
<includes>
<include>*.xml</include>
<include>*.properties</include>
</includes>
</fileSet>
<fileSet>
<directory>corporatebondpurchases</directory>
<outputDirectory>${basedir}/bin</outputDirectory>
<includes>
<include>*.sh</include>
</includes>
</fileSet>
</fileSets>
</assembly>
Run Code Online (Sandbox Code Playgroud)
以下是部分构建的输出:
[INFO] --- maven-assembly-plugin:2.4:single (default-cli) @ SpreadsheetLoader ---
[INFO] Reading assembly descriptor: src/main/assembly/assembly.xml
[INFO] Building …Run Code Online (Sandbox Code Playgroud) 我正在使用Maven程序集插件为不同的环境准备一些配置工件,我使用资源过滤来替换参数值.
我遇到了一个奇怪的行为,我有一个属性文件,其内容如下:
###########################
#author.name@company.com#
############################
env.name = $ {} replacement.value
作者电子邮件的"@"符号的存在导致所有属性引用被忽略.
我试图寻找文件,说明为什么会发生这种情况 - 但找不到任何可以解决这种问题的方法.任何有用的指向文档或解释的指针将非常感激.
以供参考:
我有一个maven项目,它通过我希望作为控制台应用程序运行的maven程序集插件生成一个jar .但是,未在MANIFEST.MF中设置MainClass属性.这是我的插件配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2.1</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>net.justaprogrammer.poi.cleanser.Cleanser</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
但是,这不会被添加到生成的jar中的MANIFEST.MF中mvn package.生成的清单如下:
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: zippy
Build-Jdk: 1.6.0_25
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我正在使用shade插件,除了能够为manifest via设置Class-Path之外,一切正常
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.generic.App</mainClass>
<classPath>. ./config</classPath>
</transformer>
Run Code Online (Sandbox Code Playgroud)
我明白了
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-shade-plugin:2.1:shade (default) on project SpringThing: Unable to parse configuration of mojo org.apache.maven.plugins:maven-shade-plugin:2.1:shade for parameter transformer: Cannot find setter, adder nor field in org.apache.maven.plugins.shade.resource.ManifestResourceTransformer for 'classPath' -> [Help 1]
Run Code Online (Sandbox Code Playgroud)
看文件
应该能够解析任何有效的清单资源吗?我试过clss-path Class-Path ClassPath什么都行不通......
我需要classpath来设置外部app属性文件的位置.
由于一个众所周知的问题,我使用的是阴影插件而不是汇编:
http://blog.idm.fr/2009/09/maven-assembly-plugin-and-spring-namespace-handlers.html
顺便说一下,我可以很容易地在装配中做到这一点:(并且它有效)
<manifestEntries>
<Class-Path>. ./config</Class-Path>
</manifestEntries>
Run Code Online (Sandbox Code Playgroud)
我不能通过maven使用oneJar插件,因为你也无法设置清单条目.(我不认为?)
有任何想法吗?
manifest classpath maven maven-assembly-plugin maven-shade-plugin
也许我是盲人,但maven组件插件可以创建一个包含当前project.jar和所有依赖jar的zip文件吗?"bin"id只包含我的project.jar,jar-with-dependencies将所有内容放在一个我不喜欢的jar中.
我有一个多模块maven项目,我正在尝试使组件插件的模块集源部分工作.
我有模块" module_parent "," module_a "和" module_assembly ".
module_a和module_assembly是module_parent的子节点.
module_assembly在module_a上有一个声明的pom依赖项.
module_assmebly有程序集插件,assembly.xml看起来像:
<?xml version="1.0"?>
<assembly>
<id>bin</id>
<formats>
<format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<moduleSets>
<moduleSet>
<useAllReactorProjects>true</useAllReactorProjects>
<includes>
<include>com.mystuff:module_a</include>
</includes>
<sources>
<fileSets>
<fileSet>
<outputDirectory>/</outputDirectory>
<excludes>
<exclude>**/target/**</exclude>
</excludes>
<directory>/</directory>
</fileSet>
</fileSets>
</sources>
</moduleSet>
</moduleSets>
</assembly> <!-- -->
Run Code Online (Sandbox Code Playgroud)
我对module_a的module_assembly有一个显式依赖.module_assembly的pom中的依赖关系如下:
<dependencies>
<dependency>
<groupId>com.mystuff</groupId>
<artifactId>module_a</artifactId>
<version>1.0</version>
<type>pom</type>
</dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)
我打开调试时从mvn包获得的错误是:
[DEBUG] All known ContainerDescritporHandler components: [metaInf-services, plexus, metaInf-spring, file-aggregator]
[DEBUG] No dependency sets specified.
[WARNING] The …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用maven来构建一个jar但我不断收到错误
ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile
(default-compile) on project Application: Fatal error compiling: invalid target release: 1.8 -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
Run Code Online (Sandbox Code Playgroud)
mvn -v输出
mvn -version
Apache Maven 3.2.5 (12a6b3acb947671f09b81f49094c53f426d8cea1; 2014-12-14T09:29:23-08:00)
Maven …Run Code Online (Sandbox Code Playgroud) 我正在开发一个纯Java基于配置的Spring MVC项目.当我进行Maven清理安装时,我收到以下错误.
无法在项目上执行目标org.apache.maven.plugins:maven-war-plugin:2.2:war(default-war)SpringMVC-ShoppingCart:组装WAR时出错:需要webxml属性(或预先存在的WEB-INF/web .xml如果在更新模式下执行) - > [帮助1]
该错误表示web.xml缺少,但由于我使用的是基于纯Java的配置,因此我没有.
如何确保项目构建和创建war文件没有web.xml?
java spring-mvc maven maven-assembly-plugin maven-war-plugin
maven ×8
java ×3
maven-2 ×3
jar ×2
classpath ×1
filtering ×1
manifest ×1
spring-mvc ×1
teamcity-7.0 ×1