寻找Maven快捷方式 - 包括Maven构建中的jar文件

时间:2011-08-16 01:44:17

标签: java maven-2

我继承了一个Maven项目。我只是将它用作构建工具,我想尽可能少地干扰事情。我必须对其中一个Java文件稍加补充,并且这个添加要求我在构建路径中包含一个新jar。我怎么说:这里是一个罐子,只需使用它。它不需要版本化,依赖或下载或任何东西,只需使用它。任何帮助将不胜感激。

编辑:我找到this,实际上有效(!)。如果有人知道这些事情可以阅读这个答案,如果它看起来合理正确,请将此问题作为副本关闭。

编辑:不,我误解了我的结果。 似乎不起作用。

3 个答案:

答案 0 :(得分:3)

到目前为止,使用maven管理依赖关系的最佳方法是从存储库中获取它们,但是从最理想到最少的顺序,我想到了四个总体选项:

  1. 如果jar是一个常见的第三方库,你几乎肯定会在某个存储库中找到它。您只需添加一个<dependency>元素,也可能添加一个<repository>,以便知道从何处获取依赖项。
  2. 任何仓库中都没有的本土jar应该部署到本地存储库,例如Nexus,可供整个团队/公司使用。然后将依赖项添加到项目中,就像在选项1中一样。这样只需要处理一次,其他人都可以通过普通的Maven机制获取jar。
  3. 要仅在本地处理问题而不提供工件的任何可重用性,您可以使用install:install-file目标将其安装到本地存储库(即〜/ .m2 /存储库中的本地缓存)中。 / LI>
  4. 最后,您最不希望使用system-scoped dependency。这意味着您可以在文件系统中的某个位置使用jar文件,将<scope>的{​​{1}}元素设置为值“system”,并添加包含完整路径的<dependency>元素到有问题的罐子里。
  5. 编辑:由于选项4似乎适合您,只需将jar放入您的项目并将其提交到您的版本控制。然后,假设jar在项目的lib / foo.jar中,将其添加到POM的依赖项中:

    <systemPath>

    这一切都来自记忆,但听起来不错。

答案 1 :(得分:1)

以下是一些相关答案: Maven: keeping dependent jars in project version control

我不建议使用来自POM的install:install-file - 如果它是一次性要求,您最好从命令行使用它并将其记录为准备步骤。但是,使构建自包含或提供具有所需工件的存储库肯定是更好的选择。

答案 2 :(得分:-1)

以下是如何继续。根据以下pom.xml创建一个单独的maven项目。

<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>net.dwst</groupId>
    <artifactId>MavenMissingJars</artifactId>
    <version>1.0</version>
    <packaging>jar</packaging>

    <name>Maven Missing Jars</name>

    <build>

        <plugins>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-install-plugin</artifactId>
                <version>2.3</version>
                <executions>
                    <execution>
                        <id>dProguard-4.6</id>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>install-file</goal>
                        </goals>
                        <inherited>false</inherited>
                        <configuration>
                            <file>toinstall/4.6/proguard.jar</file>
                            <groupId>net.sf.proguard</groupId>
                            <artifactId>proguard</artifactId>
                            <version>4.6</version>
                            <packaging>jar</packaging>
                            <generatePom>true</generatePom>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

        </plugins>

    </build>

</project>

假设有一个/toinstall/4.6/目录相对于你的pom.xml并且那个名为proguard.jar的jar就在那里,调用这个插件会将jar从你的本地目录复制到你的maven本地库中。

这必须执行一次,这就是为什么最好有一个单独的小型maven项目来注入丢失的罐子。

然后,使用您在上面pom.xml中定义的坐标(artifactid,version和packaging)在项目中添加依赖项。