Java Maven安装更改jar

Java Maven安装更改jar,java,eclipse,maven,jar,maven-install-plugin,Java,Eclipse,Maven,Jar,Maven Install Plugin,我使用外部程序来创建jar。此操作的代码如下所示: <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <version>1.8</version> <execution

我使用外部程序来创建jar。此操作的代码如下所示:

<plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>1.8</version>
            <executions>
                <execution>
                    <phase>generate-sources</phase>
                    <configuration>
                        <tasks>
                            <property environment="env" />
                            <property name="appname" value="hellojavaworld" />
                            <echoproperties />
                            <exec dir="" executable="respawn.exe" searchpath="true">
                                <arg value="${basedir}\src\main\java\${appname}.app" />
                            </exec>
                        </tasks>
                    </configuration>
                    <goals>
                        <goal>run</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

org.apache.maven.plugins
这个链接描述了这些罐子的区别。您可以看到右侧的jar(maven本地存储库)遗漏了带有适当类的abc文件夹


问题是为什么

Maven将把
src/main/Java
中的Java源文件(
*.Java
)编译成
target/classes
。这些类将由Maven打包到jar中

PS此处仅显示Maven默认位置


看看你的问题,似乎你没有Java源文件。

Maven将把Java源文件(
*.Java
)从
src/main/Java
编译成
target/classes
。这些类将由Maven打包到jar中

PS此处仅显示Maven默认位置


看看您的问题,您似乎没有Java源文件。

您已经在其中一个JAR中的Meta Inf文件夹中。meta-inf之外是什么?可能是的重复,如果我转到maven创建的jar,它只包含meta-inf文件夹,但原始jar包含一个带类的文件夹。这是正确的失踪在maven罐。这是什么?您已经在其中一个JAR中的Meta Inf文件夹中。meta-inf之外是什么?可能是的重复,如果我转到maven创建的jar,它只包含meta-inf文件夹,但原始jar包含一个带类的文件夹。这是正确的失踪在maven罐。那是什么?那是真的。但是,另一方面,我能够通过上面的mvninstall命令将第三方jar安装到本地存储库。所以这可能是可行的。我想使用ant run插件调用外部exe,该插件创建了安装到maven本地存储库的jar。我想不出怎么做。有什么意见吗?Maven命令
mvn install:install file
用于将jar上传(部署)到本地Maven存储库。它不会改变罐子的内容!问题是:左边的jar(zip)是如何创建的,右边的jar(zip)是如何创建的?看起来右边的是用Maven创建的,因为归档文件包含一个Maven目录。左侧的jar是在没有Maven的情况下创建的,因为它没有那个容器。问题是左侧的jar是使用pom.xml中指定的Maven antrun插件创建的。问题是,jar是由外部exe程序生成的,而不是由maven生成的。Maven只需使用antrun插件调用外部exe。如果我为这个pom.xml进行mvn安装,它只会在右侧创建没有结构的jar(abc,…)。它按设计工作。但如果我执行mvn install:installfile和这个jar的路径(之前由exe pgm创建),它是正确的。问题是如何通过pom.xml安装jar,它使用antrun插件调用外部exe程序来生成而不是maven jar?好的,这使得设置和问题更加清晰。为什么要用Ant从Maven调用Ant来创建一个jar?然后通过Maven将CreateJAR部署到Maven存储库?为什么不从Ant Task Exec()或Ant Task Java()调用
mvn install:install file
。但是,另一方面,我能够通过上面的mvninstall命令将第三方jar安装到本地存储库。所以这可能是可行的。我想使用ant run插件调用外部exe,该插件创建了安装到maven本地存储库的jar。我想不出怎么做。有什么意见吗?Maven命令
mvn install:install file
用于将jar上传(部署)到本地Maven存储库。它不会改变罐子的内容!问题是:左边的jar(zip)是如何创建的,右边的jar(zip)是如何创建的?看起来右边的是用Maven创建的,因为归档文件包含一个Maven目录。左侧的jar是在没有Maven的情况下创建的,因为它没有那个容器。问题是左侧的jar是使用pom.xml中指定的Maven antrun插件创建的。问题是,jar是由外部exe程序生成的,而不是由maven生成的。Maven只需使用antrun插件调用外部exe。如果我为这个pom.xml进行mvn安装,它只会在右侧创建没有结构的jar(abc,…)。它按设计工作。但如果我执行mvn install:installfile和这个jar的路径(之前由exe pgm创建),它是正确的。问题是如何通过pom.xml安装jar,它使用antrun插件调用外部exe程序来生成而不是maven jar?好的,这使得设置和问题更加清晰。为什么要用Ant从Maven调用Ant来创建一个jar?然后通过Maven将CreateJAR部署到Maven存储库?为什么不从Ant Task Exec()或Ant Task Java()调用
mvn install:install file