Maven的清单问题

iqxoj9l9  于 2023-06-21  发布在  Maven
关注(0)|答案(2)|浏览(102)

我创建了一个核心JavaMaven项目,它有一个主类。该类在Intellij中运行良好,但当我使用mvn clean install创建jar时,它无法使用ClassNotFoundException运行。我知道我的maven依赖项没有添加到类路径中,但是我如何添加它们呢?除非绝对需要,否则我不想创建一个带有依赖项的jar。
下面是我的pom.xml的构建标记
更新:根据@devman的建议,我添加了maven-dependency-plugin。下面的pom是更新的。但是在运行mvn clean install之后,lib目录仍然没有在target目录中创建。不知何故,我也没有看到这个插件在Intellij,但看到一些插件,没有在POM。下面是我更新的pom.xml的build标签。

<build>
<pluginManagement>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>${java.version}</source>
                <target>${java.version}</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>${maven-jar-plugin.version}</version>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <classpathPrefix>lib/</classpathPrefix>
                        <mainClass>com.pkg.MyApp</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>${maven-dependency-plugin.version}</version>
            <executions>
                <execution>
                    <phase>install</phase>
                    <goals>
                        <goal>copy-dependencies</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${project.build.directory}/lib</outputDirectory>
                        <includeScope>runtime</includeScope>
                        <excludeScope>provided</excludeScope>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</pluginManagement>

下面是我在Intellij中看到的maven-> plugins

下的屏幕截图

zvokhttg

zvokhttg1#

您可以构建文件jar,用您的主类替换com.thanbv1510.MainApp中的值

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <source>${java.version}</source>
        <target>${java.version}</target>
    </configuration>
</plugin>

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>${maven-jar-plugin.version}</version>
    <configuration>
        <archive>
        <manifest>
            <addClasspath>true</addClasspath>
            <classpathPrefix>lib/</classpathPrefix>
            <mainClass>com.thanbv1510.MainApp</mainClass>
        </manifest>
        </archive>
    </configuration>
</plugin>

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>${maven-dependency-plugin.version}</version>
    <executions>
        <execution>
        <phase>install</phase>
        <goals>
            <goal>copy-dependencies</goal>
        </goals>
        <configuration>
            <outputDirectory>${project.build.directory}/lib</outputDirectory>
            <includeScope>runtime</includeScope>
            <excludeScope>provided</excludeScope>
        </configuration>
        </execution>
    </executions>
</plugin>
qnakjoqk

qnakjoqk2#

不知何故,删除pluginManagement标记解决了这个问题。如果有人能解释为什么这个标签不能正常工作,我会接受这个答案。

相关问题