将项目中的特定文件导出到maven本地仓库

Export a specific file in project to maven local repository

我有一个 Grunt 项目,它在其构建文件夹中构建一个 zip。 为了分发此 zip,我已将其转换为 Maven 项目并将此 zip 复制到 maven 目标文件夹中。

  <plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.6</version>
    <executions>
      <execution>
        <id>copy-resources</id>
        <!-- here the phase you need -->
        <phase>install</phase>
        <goals>
          <goal>copy-resources</goal>
        </goals>
        <configuration>
          <outputDirectory>${basedir}/target</outputDirectory>
          <resources>
            <resource>
              <directory>build</directory>
              <includes>
                <include>*.zip</include>
              </includes>
              <filtering>true</filtering>
            </resource>
          </resources>
        </configuration>
      </execution>
    </executions>
  </plugin>

但是这个 zip 文件没有复制到我的本地 maven 存储库。 是否有配置或插件允许我指定 maven repo 文件夹的内容?

已更新:
项目结构:

myproject  
   |_ pom.xml  
   |_ build  
   |_ dist  
        |_ myproject.js
        |_ myproject.css
        |_ libs/

我要压缩的目录是:/build/dist/

使用的描述符:

<assembly>
<formats>
    <format>zip</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
    <fileSet>
        <directory>build/dist</directory>
        <includes>
            <include>**/*</include>
        </includes>
    </fileSet>
</fileSets>
</assembly>

生成的 zip 如下:

myproject-1.0.0.zip
 |_ build
      |_ dist
           |_ myproject.js
           |_ myproject.css
           |_ libs/

我的要求是:

myproject.zip
 |_ myproject.js
 |_ myproject.css
 |_ libs/

1。 zip 名称 = "myproject.zip" 而不是 "myproject-1.0.0.zip"
2. 放弃中间文件结构 build/dist.

But this zip file is not copied to my local maven repository.

Maven 存储库的目的不是存储单个文件,而是构建过程的结果(jar、war、pom)。

如果你想构建一个包含你的程序和一些资源作为目录结构的 zip(logging-dir、tmp-dir、config-dir,...),你可以使用 maven-assembly-plugin . Here is an example .

更新 1

这是我自己的一个例子。看一下 <outputDirectory> 个元素。

这是程序集描述符myAppDescriptor.xml:

<assembly>
    <id>myAppAssembly</id>

    <formats>
        <format>zip</format>
    </formats>

    <baseDirectory>${project.build}/${artifactId}-${version}</baseDirectory>
    <includeBaseDirectory>false</includeBaseDirectory>

    <!-- Adds dependencies to assembly under lib directory -->
    <dependencySets>
        <dependencySet>
            <useProjectArtifact>false</useProjectArtifact>
            <outputDirectory>lib</outputDirectory>
            <unpack>false</unpack>
        </dependencySet>
    </dependencySets>

    <fileSets>
        <!--
           Adds startup scripts to the root directory of zip package. The startup
           scripts are located to src/main/scripts directory as stated by Maven
           conventions.
       -->
        <!-- adds jar package to the root directory of zip package -->
        <fileSet>
            <directory>${project.build.directory}</directory>
            <outputDirectory>/</outputDirectory>
            <includes>
                <include>*.jar</include>
            </includes>
            <excludes>
                <exclude>*source*</exclude>
            </excludes>
        </fileSet>
        <fileSet>
            <directory>${project.build.scriptSourceDirectory}</directory>
            <outputDirectory>/</outputDirectory>
            <includes>
                <include>*.cmd</include>
            </includes>
            <filtered>true</filtered>
        </fileSet>
        <fileSet>
            <directory>${project.build.scriptSourceDirectory}/config</directory>
            <outputDirectory>/config</outputDirectory>
            <filtered>true</filtered>
        </fileSet>
        <fileSet>
            <directory>${project.build.scriptSourceDirectory}/log</directory>
            <excludes>
                <exclude>*.*</exclude>
            </excludes>
            <outputDirectory>/log</outputDirectory>
        </fileSet>
        <fileSet>
            <directory>${project.build.scriptSourceDirectory}/sql</directory>
            <outputDirectory>/sql</outputDirectory>
        </fileSet>
        <fileSet>
            <directory>${project.build.scriptSourceDirectory}/mailing</directory>
            <excludes>
                <exclude>*</exclude>
            </excludes>
            <outputDirectory>/mailing</outputDirectory>
        </fileSet>
        <fileSet>
            <directory>${project.build.scriptSourceDirectory}/tmp</directory>
            <outputDirectory>/tmp</outputDirectory>
        </fileSet>
    </fileSets>
</assembly>

这是 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>

    <grpoupId>com.enterprise</grpoupId>
    <artifactId>MyApp</artifactId>
    <version>0.6.1</version>
    <packaging>jar</packaging>

    <name>MyApp</name>
    <url>http://www.enterprise.com</url>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <descriptors>
                        <descriptor>src/main/assembly/myAppDescriptor.xml</descriptor>
                    </descriptors>
                    <finalName>MyApp</finalName>
                    <appendAssemblyId>false</appendAssemblyId>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>assembly</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.5</version>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>lib/</classpathPrefix>
                            <mainClass>com.enterprise.MyApp</mainClass>
                        </manifest>

                        <manifestEntries>
                            <Class-Path>.</Class-Path>
                        </manifestEntries>
                    </archive>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <!-- your dependencies -->
    </dependencies>

    </project>

zip 具有以下结构:

Myapp.zip
    |__ config
    |__ lib
    |__ log
    |__ mailing
    |__ sql
    |__ tmp
    myApp-0.6.1.jar
    myApp.cmd

更新 2: 关于将 zip 部署到存储库的要求:

Structure of project:

myproject  
  |_ pom.xml  
  |_ build  
       |_ dist  
            |_ myproject.js
            |_ myproject.css
            |_ libs/

我不熟悉 JavaScript 与 Maven 的结合,但我认为项目布局应该类似于这样:

myproject  
  |_ pom.xml
  |_ src
       |_ main
           |_ webapp
                *your js and css files here ???*
  |_ target  
       |_ ...

默认情况下,名为 "build" 的目录不被 maven 识别为源目录。目录 target 是在 maven 执行期间创建的。

另一种解决方案可能是将目录 build 配置为 build 部分中 pom.xml 中的源目录:

<build>
    ...
    <sourceDirectory>build</sourceDirectory> 
    ...
</build>

看看 maven standard directory layout ,并将这些信息与有关 "maven and JavaScript".

的一些研究相结合

然后应该可以通过 mvn installmvn deploy 生成一个 zip 并将其部署到任何存储库。