使用maven更改不会影响最新的jar

时间:2012-10-29 11:45:52

标签: java maven

我需要在struts2-jquery网格插件中做一些修改。我从https://struts2-jquery.googlecode.com/svn/trunk下载了源代码。我改变了这个来源的逻辑。当我使用 mvn package 执行我的POM.xml文件时。我收到了例外

 "The project com.jgeppert.struts2.jquery:struts2-jquery-grid-plugin:3.5.0-SNAPSHOT 
    have 1 error

        Non-resolvable parent POM:could not find artifact com.jgeppert.struts2.jquery:struts2-
jquery:pom:3.5.0-snapshot and 'Parent.relativePath' points at wrong local POM @line 5,c
olumn 13  "

我的pom.xml文件如下所示。

<?xml version="1.0"?>
<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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
       <groupId>com.jgeppert.struts2.jquery</groupId>
        <artifactId>struts2-jquery</artifactId>
        <version>3.5.0-SNAPSHOT</version>
    </parent>
    <artifactId>struts2-jaquery-grid-plugin</artifactId>
    <name>Struts 2 jQuery Grid Plugin</name>
    <packaging>jar</packaging>

    <scm>
        <connection>scm:svn:http://struts2-jquery.googlecode.com/svn/trunk/struts2-jquery-grid-plugin</connection>
        <developerConnection>scm:svn:https://struts2-jquery.googlecode.com/svn/trunk/struts2-jquery-grid-plugin</developerConnection>
        <url>http://code.google.com/p/struts2-jquery/source/browse/</url>
    </scm>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.myfaces.tobago</groupId>
                <artifactId>maven-apt-plugin</artifactId>
                <version>1.0.39</version>
                <configuration>
                    <A>
                        uri=/struts-jquery-grid-tags,
                        tlibVersion=${tlib.version},
                        jspVersion=2.0,
                        shortName=sjg,
                        displayName="Struts2 jQuery Grid Tags",
                        outFile=${basedir}/target/classes/META-INF/struts-jquery-grid-tags.tld,
                        description="Struts2 tags based on jQuery and jqGrid.",
                        outTemplatesDir=${basedir}/src/site/docs
                    </A>
                    <resourceTargetPath>target</resourceTargetPath>
                    <fork>false</fork>
                    <force>true</force>
                    <nocompile>true</nocompile>
                    <showWarnings>true</showWarnings>
                    <factory>
                        org.apache.struts.annotations.taglib.apt.TLDAnnotationProcessorFactory
                    </factory>
                    <target>1.5</target>
                    <includes>
                        <include>**/*.java</include>
                    </includes>
                </configuration>
                <executions>
                    <execution>
                        <phase>compile</phase>
                        <goals>
                            <goal>execute</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <dependencies>

        <!-- Core -->

        <dependency>
            <groupId>com.jgeppert.struts2.jquery</groupId>
            <artifactId>struts2-jquery-plugin</artifactId>
            <version>${project.version}</version>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts-annotations</artifactId>
            <version>1.0.4</version>
            <optional>true</optional>
        </dependency>

        <!-- JSP API -->

        <!-- struts-annotations must be in compile scope for maven-apt-plugin to
             function correctly. Marking it optional to exclude it from transitive dependency resolution -->
        <dependency>
            <groupId>org.apache.struts</groupId>
            <artifactId>struts2-core</artifactId>
            <version>${struts2.version}</version>
            <type>jar</type>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.velocity</groupId>
            <artifactId>velocity</artifactId>
            <version>1.5</version>
            <scope>compile</scope>
        </dependency>
    </dependencies>

</project>

根据我的理解,父标记会查看另一个pom.xml文件。我试图在父标记中添加相对路径,但它不起作用。我没有在https://struts2-jquery.googlecode.com/svn/trunk中看到父pom.xml。

我删除了父标记并将其添加到groupid,artifactId&amp;版本给出3.5.0-SNAPSHOT然后它也失败了。我再次更改了3.4.0而不是3.5.0-SNAPSHOT然后它的build .jar文件。但它没有影响我的变化。

那么如何使用代码的最新更改来运行pom文件。有没有替代方法来创建.jar文件而不是运行pom.xml文件。

2 个答案:

答案 0 :(得分:0)

根据错误,它尝试下载com.jgeppert.struts2.jquery:struts2-jquery-grid-plugin:3.5.0-SNAPSHOT,因为在maven存储库中没有这样的版本。

用下面的依赖替换你的pom,它会很好。

<dependency>
    <groupId>com.jgeppert.struts2.jquery</groupId>
    <artifactId>struts2-jquery-plugin</artifactId>
    <version>3.4.0</version>
</dependency>

答案 1 :(得分:0)

构建失败的原因是因为存在无法在本地存储库或当前 reactor构建。术语reactor构建指的是运行mvn的项目和所有子项目,由pom中的<module>元素引用。

在您的情况下,您需要:

  • mvn install将父pom和struts2-jquery-plugin插入本地存储库,然后再尝试你正在做的事情;
  • 更改目录(即到trunk目录),并构建网格插件,作为包含父pom和struts2-jquery-plugin的reactor构建的一部分。

第一种方法:如果您转到结帐的顶级,即trunk,然后运行:

mvn -pl .,struts2-jquery-plugin install

它会将父pom和struts2-jquery-plugin的快照版本安装到本地存储库中。然后,您应该能够在网格插件目录中运行mvn package

第二种方法:从trunk开始,您可以运行:

mvn -am -pl struts2-jquery-grid-plugin package

这将构建网格插件以及在reactor构建中找到的任何依赖项,即父pom和struts2-jquery-plugin本身。