2

我在我的 java 构建过程中使用 maven。以下是创建具有所有依赖项的单个 jar 的代码片段。为了减少对构建的微小更改的数据传输,我想将所有项目文件(包括依赖项)放在文件夹 target/build 中。我计划将该文件夹与运行该应用程序的远程计算机同步,并使用以下命令运行该应用程序:

java -cp target/build/* <classname>

如何修改此代码段以实现此目的?我已阅读此处的文档,但不知道如何将修复拼凑在一起:

4

2 回答 2

3

您是否在询问如何让 maven 在构建时将依赖项复制到目标文件夹?

我想你想要 Maven 依赖插件。它将项目的依赖项复制到您指定的输出文件夹。

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>2.3</version>
            <executions>
                <execution>
                    <id>install</id>
                    <phase>install</phase>
                    <goals>
                        <goal>copy-dependencies</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${targetDirectory}</outputDirectory>
                    </configuration>
                </execution>
            </executions>
        </plugin>

听起来您可能还需要 maven jar 插件来告诉它将您的 jar 打包到哪里。

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.3.1</version>
            <configuration>
                <outputDirectory>${dir}</outputDirectory>
            </configuration>
        </plugin>
于 2012-09-16T19:12:18.893 回答
1

使用maven依赖插件

它有 gole: copy-dependencies。这应该做你想要的。

示例(取自文档

  <project>
    [...]
    <build>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-dependency-plugin</artifactId>
          <version>2.5.1</version>
          <executions>
            <execution>
              <id>copy-dependencies</id>
              <phase>package</phase>
              <goals>
                <goal>copy-dependencies</goal>
              </goals>
              <configuration>
                <outputDirectory>${project.build.directory}/alternateLocation</outputDirectory>
                <overWriteReleases>false</overWriteReleases>
                <overWriteSnapshots>false</overWriteSnapshots>
                <overWriteIfNewer>true</overWriteIfNewer>
              </configuration>
            </execution>
          </executions>
        </plugin>
      </plugins>
  </build>
   [...]
</project>
于 2012-09-16T19:12:36.843 回答