有时候希望能把部署环境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>
相关推荐
总的来说,`maven-assembly-plugin`是Maven构建过程中的一个重要工具,它帮助开发者灵活地定制打包过程,适应不同环境的需求。结合Spring Boot项目,我们可以更高效地管理和部署应用程序,提高开发和运维的效率。
Maven-assembly-plugin是maven中针对打包任务而提供的标准插件,可以实现自定义打包。主要提供如下功能: ● 提供一个把工程依赖元素、模块、网站文档等其他文件存放到单个归档文件里。 ● 打包成指定格式分发包,...
Maven3种打包方式中maven-assembly-plugin的使用详解 Maven 作为一个流行的项目管理工具,提供了多种方式来打包项目。其中,maven-assembly-plugin 是一个非常强大和灵活的插件,支持自定义的打包结构,并且可以...
本篇文章将详细探讨如何使用Maven的`maven-assembly-plugin`插件来打包Dubbo服务接口。 首先,我们要理解Maven的生命周期和构建过程。Maven有多个生命周期阶段,如`clean`、`compile`、`test`、`package`等,每个...
maven打包,指定入口类的jar包,具体的pom配置为:<plugin> <groupId>org.apache.maven.plugins <artifactId>maven-shade-plugin <version>3.1.0 <phase>package <goal>shade implementation=...
而`maven-assembly-plugin`是Maven的一个插件,用于创建自定义的打包(assembly)格式,比如tar、tar.gz、zip等。这个插件允许开发者在打包过程中包含额外的资源,如配置文件、文档等,使得最终的发布包更完整,便于...
接下来,使用maven-assembly-plugin打包项目,主要配置如下: ```xml <plugin> <groupId>org.apache.maven.plugins <artifactId>maven-assembly-plugin <version>2.4 <descriptor>src/main/resources/...
在Java开发领域,Maven是一个不可或缺的构建工具,它通过管理项目的依赖关系,简化了构建...对于`maven plugin打包下载`这个主题,理解其工作原理、生命周期和配置方式至关重要,这将直接影响到项目的构建和打包过程。
maven安装与配置 确保已安装JDK。Maven 3.9+版本需要JDK 8或更高版本。可以通过输入java -version来检查JDK是否安装以及其版本。 下载Maven。访问Maven官网下载最新版本,例如3.9.1。对于Windows用户,通常下载...
下面是一个具体的配置示例,用于说明如何使用 Maven Assembly Plugin: ```xml <plugin> <groupId>org.apache.maven.plugins <artifactId>maven-assembly-plugin <version>2.6 <mainClass>...
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-...
在Maven中实现这个功能,我们需要借助maven-assembly-plugin或者maven-war-plugin,但更常见的是使用maven-resources-plugin和maven-compiler-plugin配合yuicompressor-maven-plugin。以下是一个详细的步骤说明: 1...
1. **项目对象模型(POM)**:Maven 使用一个 XML 文件(通常是 `pom.xml`)来描述项目的基本信息、构建过程、依赖关系等。 2. **依赖管理**:Maven 能够自动处理项目所需的所有外部依赖,开发者不需要手动下载和...
总结来说,这个"demo-maven-pkg.zip"是使用Maven的插件功能,可能结合`maven-assembly-plugin`或`maven-resources-plugin`,将一个Maven项目及其相关资源和依赖打包成ZIP格式的文件,便于分发和部署。具体的内容和...
1. **依赖打包到外部**:使用`maven-assembly-plugin`或`maven-shade-plugin`,我们可以将依赖打包到一个单独的lib目录下。比如,通过`maven-assembly-plugin`的`dependencySet`配置,我们可以指定哪些依赖应该被...
例如,`maven-surefire-plugin` 用于运行单元测试,`maven-javadoc-plugin` 可生成API文档,而`maven-assembly-plugin` 或`maven-resources-plugin` 则帮助创建可分发的工件。 Apache Maven 3.3.9 版本相对于之前的...
java 写的可执行程序怎么使用 maven 打包? 执行程序中有巨多第三方依赖包,要一起打进 jar 包,怎么办? maven-assembly-plugin 插件打第三方依赖包进 jar,spring 有 org.springframework.beans.factory.parsing....
例如,`maven-assembly-plugin`可以用来创建自定义的打包格式,`maven-javadoc-plugin`则用于生成项目文档。 至于"Readme-说明.htm"文件,通常包含有关如何安装、配置和使用Maven的详细信息。用户应仔细阅读该文件...
例如,maven-surefire-plugin用于执行单元测试,maven-javadoc-plugin生成API文档,maven-assembly-plugin则能打包成可分发的格式,如ZIP或JAR。 5. **聚合与继承**:Maven支持项目聚合,一个父POM可以包含多个子...
“框架-Maven-插件”通常会包含一些针对特定框架的构建、打包、部署等目标,例如Spring Boot的spring-boot-maven-plugin,它可以方便地对Spring Boot应用进行打包和运行。这类插件使得开发者无需深入理解框架内部的...