Maven从本地文件夹复制jar文件

时间:2009-09-09 07:30:21

标签: maven-2 seam

我正在使用seam来开发我的应用程序并在weblogic 10.1MP上运行它 使用maven2构建应用程序,但未在任何存储库中找到jboss-seam-wls-compatible.jar文件。 在maven中我如何将这个jar从我的本地文件夹复制到target / WEB-INF / lib文件夹。

2 个答案:

答案 0 :(得分:4)

在Maven中执行此操作的正确方法是将其安装到存储库(远程或本地)中。

但是,有些情况下本地存储库不太可取。例如,您在许多计算机上运行Maven,而您不想手动安装它。

在这些极少数情况下,我只是使用检查JAR的反模式进行版本控制。我甚至懒得将它安装到本地存储库,因为它添加了另一个步骤并制作了另一个JAR副本。我只是像这样直接使用JAR,

            <dependency>
                    <groupId>local</groupId>
                    <artifactId>homeless-jar</artifactId>
                    <version>1.0</version>
                    <scope>system</scope>
                    <systemPath>${basedir}/lib/homeless.jar
                    </systemPath>
            </dependency>

编辑:$ {basedir}由Maven定义。它是您的pom.xml所在的Maven项目的基本目录。我的例子不清楚。见这个,

            <dependency>
                    <groupId>any-id</groupId>
                    <artifactId>any-name</artifactId>
                    <version>1.0</version>
                    <scope>system</scope>
                    <systemPath>${basedir}/src/main/lib/homeless.jar
                    </systemPath>
            </dependency>

答案 1 :(得分:3)

您可以使用安装插件install-file goal将jar安装到本地存储库,然后您可以正常声明对工件的依赖关系,并且它会被war插件自动打包到您的战争中。

如果你有一个远程存储库,你可以使用deploy插件的deploy-file goal将jar部署到该存储库,然后你的队友也可以访问jar。

有关信息,有一个Jira可以在中央提供此工件。


根据您的评论进行更新。我建议不要这样做,因为这不是一个好习惯,但如果你必须在你的项目的源结构中托管jar,你可以把它放在说src / main / lib下并使用antrun插件将它复制到WEB-INF / lib中。

例如:

  <plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <executions>
      <execution>
        <phase>process-resources</phase>
        <configuration>
          <tasks>
            <copy todir="${project.build.directory}/WEB-INF/lib">
              <fileset dir="src/main/lib"/>
            </copy>
          </tasks>
        </configuration>
        <goals>
          <goal>run</goal>
        </goals>
      </execution>
    </executions>
  </plugin>