我想用Maven构建一个应用程序分发。我的项目中有一个包含主要源代码的模块。我决定从这个模块构建应用程序分发。我告诉模块的POM中的maven将所有配置文件和从属库复制到target/
目录。我的问题是,Maven将所有与构建相关的临时目录(例如。classes
,generated-sources
,maven-archiver
)保留在目标目录中。我不想至少在install
阶段自动删除这些内容。我怎么能做到这一点?如果我将maven-clean-plugin
放到构建的末尾,看起来Maven总是会删除整个target
目录,无论我试图排除文件我想要保留的内容。
答案 0 :(得分:2)
在你的pom中尝试这个
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-4</version>
<executions>
<execution>
<id>user_distribution</id>
<phase>package</phase>
<goals>
<goal>attached</goal>
</goals>
<configuration>
<descriptors>
<descriptor>src/main/assembly/dist.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
这是xml
<?xml version="1.0" encoding="UTF-8"?>
<assembly xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/xsd/assembly-1.1.1.xsd">
<id>dist</id>
<formats>
<format>zip</format>
</formats>
<files>
<file>
<source>target/${pom.artifactId}-${pom.version}.jar</source>
<outputDirectory>lib/</outputDirectory>
</file>
</files>
<fileSets>
<fileSet>
<directory>directory to be included</directory>
<outputDirectory>/</outputDirectory>
<includes>
<include>file name to be included</include>
</includes>
</fileSet>
<fileSet>
<directory>another directory to be included</directory>
<outputDirectory>/</outputDirectory>
</fileSet>
</fileSets>
</assembly>
答案 1 :(得分:0)
我在模块的POM中告诉maven复制所有配置 文件和从属库到目标/目录
你好吗?
基于这个问题,您似乎不必担心有选择地删除目标文件夹的内容(可以通过自定义maven clean plugin完成),而是使用maven assembly plugin创建分发(如指出的那样)出自@Scorpion)。
后者允许您将所有项目工件(包括依赖项)捆绑为zip或其他格式,然后开发人员可以轻松使用。您可能希望通过使用单独的profile
将其与常规构建分离,以便仅根据需要构建分发。