有时候希望能把部署环境build在project,这样部属更加方便。
先说遇到的一个错误:
[INFO] No files selected for line-ending conversion or filtering. Skipping: /duitang/dist/app/trunk/java/mytest/src/jetty/resource [INFO] No files selected for line-ending conversion or filtering. Skipping: /duitang/dist/app/trunk/java/mytest/conf/my [WARNING] The following patterns were never triggered in this artifact inclusion filter: o 'commons-logging:commons-logging' [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 3.910s [INFO] Finished at: Thu Apr 17 11:54:43 CST 2014 [INFO] Final Memory: 9M/208M [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.apache.maven.plugins:maven-assembly-plugin:2.2-beta-5:single (make-assembly) on project japa: Assembly is incorrectly configured: null: Assembly is incorrectly configured: null: [ERROR] Assembly: null is not configured correctly: One or more filters had unmatched criteria. Check debug log for more information. [ERROR] -> [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/MojoFailureException
我之前之注意到这句话:
null is not configured correctly: One or more filters had unmatched criteria. Check debug log for more information.
但这句话啥意思也没说。其实关键的是这句:
[WARNING] The following patterns were never triggered in this artifact inclusion filter:
o 'commons-logging:commons-logging'
o 'commons-logging:commons-logging'
使用 assembly.xml要求你必须依赖一些包。
基本上包括下面这些都是必须的:
<dependencies> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.1</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.6.6</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <dependency> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty</artifactId> <version>${jetty.version}</version> </dependency> <dependency> <groupId>org.mortbay.jetty</groupId> <artifactId>start</artifactId> <version>${jetty.version}</version> </dependency> <dependency> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-util</artifactId> <version>${jetty.version}</version> </dependency> <dependency> <groupId>org.mortbay.jetty</groupId> <artifactId>jsp-2.1-jetty</artifactId> <version>${jetty.version}</version> </dependency> </dependencies>
下面是一个完整的配置:
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.duitang</groupId> <artifactId>japa</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <name>japa</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <jetty.version>6.1.26</jetty.version> <maven.test.skip>true</maven.test.skip> <maven.compiler.source>1.6</maven.compiler.source> <maven.compiler.target>1.6</maven.compiler.target> <maven.compiler.compilerVersion>1.6</maven.compiler.compilerVersion> </properties> <dependencies> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.1</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.6.6</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <dependency> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty</artifactId> <version>${jetty.version}</version> </dependency> <dependency> <groupId>org.mortbay.jetty</groupId> <artifactId>start</artifactId> <version>${jetty.version}</version> </dependency> <dependency> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-util</artifactId> <version>${jetty.version}</version> </dependency> <dependency> <groupId>org.mortbay.jetty</groupId> <artifactId>jsp-2.1-jetty</artifactId> <version>${jetty.version}</version> </dependency> </dependencies> <build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> <include>**/*.txt</include> <include>**/*.key</include> </includes> </resource> </resources> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.3.1</version> <configuration> <includes> <include>**/*.properties</include> <include>**/*.xml</include> <include>**/*.txt</include> <include>**/*.class</include> <include>**/*.key</include> </includes> </configuration> <executions> <execution> <id>make-a-jar</id> <phase>compile</phase> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <configuration> <archiveClasses>true</archiveClasses> <webxml>src/web/web.xml</webxml> <webResources> <resource> <directory>src/web</directory> <targetPath>WEB-INF</targetPath> <filtering>false</filtering> </resource> </webResources> </configuration> </plugin> <plugin> <artifactId>maven-assembly-plugin</artifactId> <version>2.2-beta-5</version> <configuration> <finalName>app</finalName> <attach>false</attach> <descriptors> <descriptor>assembly.xml</descriptor> </descriptors> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>
assembly.xml
<?xml version="1.0" encoding="UTF-8"?> <assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.1 http://maven.apache.org/xsd/assembly-1.1.1.xsd" > <formats> <format>dir</format> <!-- format>tar.gz</format --> <!-- format>dir</format --> </formats> <dependencySets> <dependencySet> <!-- unpack the webapp as root application --> <scope>runtime</scope> <unpack>true</unpack> <outputDirectory>webapps/${artifactId}</outputDirectory> <includes> <include>${groupId}:${artifactId}:war</include> </includes> </dependencySet> <dependencySet> <unpack>false</unpack> <outputDirectory>lib</outputDirectory> <useTransitiveFiltering>true</useTransitiveFiltering> <useStrictFiltering>true</useStrictFiltering> <fileMode>666</fileMode> <includes> <include>org.mortbay.jetty:jetty</include> <include>org.mortbay.jetty:jetty-util</include> <include>org.mortbay.jetty:start</include> <include>org.mortbay.jetty:jsp-2.1-jetty</include> <include>commons-logging:commons-logging</include> <include>log4j:log4j</include> </includes> </dependencySet> </dependencySets> <fileSets> <fileSet> <directory>src/jetty/etc</directory> <outputDirectory>etc/</outputDirectory> <filtered>false</filtered> </fileSet> <fileSet> <directory>src/jetty/logs</directory> <outputDirectory>logs/</outputDirectory> <filtered>false</filtered> </fileSet> <fileSet> <directory>src/jetty/resource</directory> <outputDirectory>resource/</outputDirectory> <filtered>true</filtered> <includes> <include>log4j.properties</include> </includes> </fileSet> <fileSet> <directory>${propsdir}</directory> <outputDirectory>webapps/${artifactId}/WEB-INF/</outputDirectory> <filtered>true</filtered> <excludes> <exclude>log4j.properties</exclude> </excludes> </fileSet> <fileSet> <directory>src/js</directory> <outputDirectory>webapps/${artifactId}/js/</outputDirectory> </fileSet> <fileSet> <directory>src/jetty/bin</directory> <outputDirectory></outputDirectory> <includes> <include>*.sh</include> </includes> <fileMode>0755</fileMode> </fileSet> </fileSets> </assembly>
另外需要把jetty和web目录放在src中,见附件(如果无需安环境切分,config可以不需要)。
补充:下面是精简方案
<?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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <artifactId>tlog-proxy</artifactId> <packaging>war</packaging> <name>TLog Proxy Server</name> <properties> <jetty.version>6.1.26</jetty.version> </properties> <dependencies> <dependency> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty</artifactId> <version>${jetty.version}</version> </dependency> <dependency> <groupId>org.mortbay.jetty</groupId> <artifactId>start</artifactId> <version>${jetty.version}</version> </dependency> <dependency> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-util</artifactId> <version>${jetty.version}</version> </dependency> <dependency> <groupId>org.mortbay.jetty</groupId> <artifactId>jsp-2.1-jetty</artifactId> <version>${jetty.version}</version> </dependency> </dependencies> <build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> <include>**/*.txt</include> <include>**/*.key</include> </includes> </resource> </resources> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <version>2.2-beta-5</version> <configuration> <finalName>tlog-proxy</finalName> <attach>false</attach> <descriptors> <descriptor>assembly.xml</descriptor> </descriptors> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>
assembly.xml
<?xml version="1.0" encoding="UTF-8"?> <assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.1 http://maven.apache.org/xsd/assembly-1.1.1.xsd" > <formats> <format>tar.gz</format> <!-- format>tar.gz</format --> <!-- format>dir</format --> </formats> <dependencySets> <dependencySet> <!-- unpack the webapp as root application --> <scope>runtime</scope> <unpack>true</unpack> <outputDirectory>webapps/${artifactId}</outputDirectory> <includes> <include>${groupId}:${artifactId}:war</include> </includes> </dependencySet> <dependencySet> <unpack>false</unpack> <outputDirectory>lib</outputDirectory> <useTransitiveFiltering>true</useTransitiveFiltering> <useStrictFiltering>true</useStrictFiltering> <fileMode>666</fileMode> <includes> <include>org.mortbay.jetty:jetty</include> <include>org.mortbay.jetty:jetty-util</include> <include>org.mortbay.jetty:start</include> <include>org.mortbay.jetty:jsp-2.1-jetty</include> <include>commons-logging:commons-logging</include> <include>log4j:log4j</include> </includes> </dependencySet> </dependencySets> <fileSets> <fileSet> <directory>src/main/resources</directory> <outputDirectory>webapps/${artifactId}/WEB-INF/classes</outputDirectory> <includes> <include>*.xml</include> <include>*.properties</include> </includes> </fileSet> <fileSet> <directory>src/jetty/etc</directory> <outputDirectory>etc/</outputDirectory> <filtered>false</filtered> </fileSet> <fileSet> <directory>src/jetty/logs</directory> <outputDirectory>logs/</outputDirectory> <filtered>false</filtered> </fileSet> <fileSet> <directory>src/jetty/resource</directory> <outputDirectory>resource/</outputDirectory> <filtered>true</filtered> <includes> <include>log4j.properties</include> </includes> </fileSet> <fileSet> <directory>${propsdir}</directory> <outputDirectory>webapps/${artifactId}/WEB-INF/</outputDirectory> <filtered>true</filtered> <excludes> <exclude>log4j.properties</exclude> </excludes> </fileSet> <fileSet> <directory>src/js</directory> <outputDirectory>webapps/${artifactId}/js/</outputDirectory> </fileSet> <fileSet> <directory>src/jetty/bin</directory> <outputDirectory></outputDirectory> <includes> <include>*.sh</include> </includes> <fileMode>0755</fileMode> </fileSet> </fileSets> </assembly>
相关推荐
Spring Boot项目使用maven-assembly-plugin根据不同环境打包成tar.gz或者zip
Maven-assembly-plugin是maven中针对打包任务而提供的标准插件,可以实现自定义打包。主要提供如下功能: ● 提供一个把工程依赖元素、模块、网站文档等其他文件存放到单个归档文件里。 ● 打包成指定格式分发包,...
maven打包dubbo服务接口(maven-assembly-plugin)
主要介绍了Maven3种打包方式中maven-assembly-plugin的使用,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
maven打包,指定入口类的jar包,具体的pom配置为:<plugin> <groupId>org.apache.maven.plugins <artifactId>maven-shade-plugin <version>3.1.0 <phase>package <goal>shade implementation=...
maven安装与配置 确保已安装JDK。Maven 3.9+版本需要JDK 8或更高版本。可以通过输入java -version来检查JDK是否安装以及其版本。 下载Maven。访问Maven官网下载最新版本,例如3.9.1。对于Windows用户,通常下载...
maven-assembly-plugin maven-jar-plugin spring-boot-maven-plugin maven-dependency-plugin maven-resources-plugin CHANGELOG 1.maven-assembly-plugin 配置assembly.xml文件路径 <plugin> <artifactId>maven-...
java 写的可执行程序怎么使用 maven 打包? 执行程序中有巨多第三方依赖包,要一起打进 jar 包,怎么办? maven-assembly-plugin 插件打第三方依赖包进 jar,spring 有 org.springframework.beans.factory.parsing....
跑批项目打了jar包后,运行一直找不到主类或者找不到classpath下的依赖。...--将scope为runtime的依赖包打包--> <scope>runtime <directory>src/main/bin <outputDirectory>/ </assembly>
Maven 插件解析 ...maven-assembly-plugin 要求用户使用一个名为 assembly.xml 的文件来配置打包过程。 了解 Maven 插件的基本概念和常用插件能够帮助我们更好地使用 Maven,并避免重新发明轮子。
当前pom.xml中详细的记录了将maven项目打成可运行jar包的完整代码,使用maven的插件maven-assembly-plugin,同时将所有依赖打到jar包中,亲测可用。
主要介绍了Maven发布Jar包中文乱码解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
此Java IntelliJ IDEA项目已使用maven-assembly-plugin打包。 请按照以下步骤运行该应用程序: 将web-app-handler二进制分发下载并解压缩到所需位置。 解压缩web-artifact-handler-1.0.zip。 运行/bin/web-app-...
sql-packaging-plugin ... 因此,将其视为版本化二进制文件很方便,以便您可以将其添加为 Maven <dependency> ,例如,使用 maven-assembly-plugin 将其打包到安装程序中。 构建插件 克隆此存储库并将插件安装到本
maven-assembly-plugin 自定义打包工具 maven-compiler-plugin 编译工具 脚手架特性 生产/开发环境切换 本地开发使用classpath下的jdbc.properties 测试环境使用env/config-dev/jdbc.properties 生产环境使用env/...
本篇文章总结出用IDEA打包jar包的多种方式。项目打包Jar包可以参考如下形式:用IDEA自带的打包形式;用Maven插件maven-shade-plugin打包;用Maven插件maven-assembly-plugin打包。下面跟着小编一起来看下吧
Maven Plugin 10.2.4. EJB 10.2.5. WAR 10.2.6. EAR 10.2.7. 其它打包类型 10.3. 通用生命周期目标 10.3.1. Process Resources 10.3.2. Compile 10.3.3. Process Test Resources 10.3.4. Test Compile ...
该项目演示了如何使用 java 打包、maven 构建系统和运行时类加载构建基于插件的简单应用程序。 结构 这是一个多模块的maven项目 sdk : 定义插件接口 plugin-src : 包含演示插件源 plugin-app : 使用插件构建的示例...
该项目演示了如何使用 java 打包、maven 构建系统和运行时类加载构建基于插件的简单应用程序。 结构 这是一个多模块的maven项目 sdk : 定义插件接口 plugin-src : 包含演示插件源 plugin-app : 使用插件构建的示例...