当我不能执行该项目时,Maven会执行哪种魔术? - java

我有一个带有某些库依赖项(.dll)的Maven项目(将其放在“lib”文件夹中)。我可以在Netbeans中运行项目而不会出现问题,但是当我尝试在Netbeans外部运行内置的.jar时,在加载库时出现以下错误:
Can't load this .dll (machine code=0xbd) on a AMD 64-bit platform
我的计算机上仅安装了一个 Java实例,它应该与Netbeans / Maven用于运行项目的JVM相同。因此,我不明白Netbeans / Maven如何能够在与我不同的平台上运行该应用程序?我尝试查看Netbeans执行(从输出中)执行的命令以运行项目,我认为是这样的:

cd C:\Users\Birger\Workspace\myproject; "JAVA_HOME=C:\\Program Files\\Java\\jdk1.8.0_91" cmd /c "\"\"C:\\Program Files\\NetBeans 8.1\\java\\maven\\bin\\mvn.bat\" -Dexec.args=\"-Djava.library.path=lib\\ -classpath %classpath com.mysite.myproject.Main\" -Dexec.executable=\"C:\\Program Files\\Java\\jdk1.8.0_91\\bin\\java.exe\" -Dmaven.ext.class.path=\"C:\\Program Files\\NetBeans 8.1\\java\\maven-nblib\\netbeans-eventspy.jar\" -Dfile.encoding=UTF-8 org.codehaus.mojo:exec-maven-plugin:1.2.1:exec\""

我尝试了这两个命令

"C:\Program Files\Java\jdk1.8.0_91\jre\bin\java.exe" -Djava.library.path=lib\ -jar myproject-1.0-SNAPSHOT.jar
"C:\Program Files\Java\jdk1.8.0_91\bin\java.exe" -Djava.library.path=lib\ -jar myproject-1.0-SNAPSHOT.jar

我添加了System.out.println(System.getProperty("sun.arch.data.model"));以使我的应用程序打印出cpu架构。在两种情况下都将打印64

尝试查看C:\Program Files\NetBeans 8.1\java\maven\bin\mvn.bat中的“mvn.bat”文件,但找不到有关Maven为运行我的应用程序所做的任何线索。

有人可以帮我吗?

比尔格

编辑

这是我的测试项目的完整源代码。我项目的pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<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>com.mysite</groupId>
    <artifactId>myproject</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
    <repositories>
        <repository>
            <id>repo</id>
            <url>file://${project.basedir}/temp-repo</url>
        </repository>
    </repositories>
    <dependencies>
        <dependency>
            <groupId>jni4net</groupId>
            <artifactId>jni4net.j</artifactId>
            <version>0.8.8.0</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>2.10</version>
                <executions>
                    <execution>
                        <id>copy</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>
                                ${project.build.directory}/lib
                            </outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.0.2</version>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>lib/</classpathPrefix>
                            <mainClass>com.mysite.myproject.Main</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <version>3.0.1</version>
                <executions>
                    <execution>
                        <id>copy-resources</id>
                        <phase>validate</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/lib</outputDirectory>
                            <resources>          
                                <resource>
                                    <directory>lib</directory>
                                    <filtering>true</filtering>
                                </resource>
                            </resources>              
                        </configuration>            
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

我项目的班级

package com.mysite.myproject;

import java.io.File;
import java.io.IOException;
import net.sf.jni4net.Bridge;

public class Main {

    static {
        String libDir = System.getProperty("java.library.path");
        System.loadLibrary("jni4net.n-0.8.8.0");

        if (System.getProperty("sun.arch.data.model").equals("64")) {
            System.loadLibrary("jni4net.n.w64.v20-0.8.8.0");
            System.loadLibrary("jni4net.n.w64.v40-0.8.8.0");
        } else {
            System.loadLibrary("jni4net.n.w32.v20-0.8.8.0");
            System.loadLibrary("jni4net.n.w32.v40-0.8.8.0");
        }

        try {
            Bridge.init(new File(libDir));
            System.out.println("Initialized!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        new Main();
    }

    public Main() {
        System.out.println("Hello world!");
    }
}

运行项目时的Netbeans输出(为详细输出添加了--debug选项):

cd C:\Users\Birger\Workspace\myproject; "JAVA_HOME=C:\\Program Files\\Java\\jdk1.8.0_91" cmd /c "\"\"C:\\Program Files\\NetBeans 8.1\\java\\maven\\bin\\mvn.bat\" -Dexec.args=\"-Djava.library.path=lib\\ -classpath %classpath com.mysite.myproject.Main\" -Dexec.executable=\"C:\\Program Files\\Java\\jdk1.8.0_91\\bin\\java.exe\" -Dmaven.ext.class.path=\"C:\\Program Files\\NetBeans 8.1\\java\\maven-nblib\\netbeans-eventspy.jar\" -Dfile.encoding=UTF-8 --debug org.codehaus.mojo:exec-maven-plugin:1.2.1:exec\""
Running NetBeans Compile On Save execution. Phase execution is skipped and output directories of dependency projects (with Compile on Save turned on) will be used instead of their jar artifacts.
C:\Program Files\Java\jdk1.8.0_91
Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 14:51:28+0100)
Maven home: C:\Program Files\NetBeans 8.1\java\maven
Java version: 1.8.0_91, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.8.0_91\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 10", version: "10.0", arch: "amd64", family: "dos"
Populating class realm maven.ext
  Included C:\Program Files\NetBeans 8.1\java\maven-nblib\netbeans-eventspy.jar
Error stacktraces are turned on.
Reading global settings from C:\Program Files\NetBeans 8.1\java\maven\conf\settings.xml
Reading user settings from C:\Users\Birger\.m2\settings.xml
Using local repository at C:\Users\Birger\.m2\repository
Using manager EnhancedLocalRepositoryManager with priority 10 for C:\Users\Birger\.m2\repository
Scanning for projects...
Extension realms for project com.mysite:myproject:jar:1.0-SNAPSHOT: (none)
Looking up lifecyle mappings for packaging jar from ClassRealm[maven.ext, parent: ClassRealm[plexus.core, parent: null]]
=== REACTOR BUILD PLAN ================================================
Project: com.mysite:myproject:jar:1.0-SNAPSHOT
Tasks:   [org.codehaus.mojo:exec-maven-plugin:1.2.1:exec]
Style:   Regular
=======================================================================

------------------------------------------------------------------------
Building myproject 1.0-SNAPSHOT
------------------------------------------------------------------------
Lifecycle default -> [validate, initialize, generate-sources, process-sources, generate-resources, process-resources, compile, process-classes, generate-test-sources, process-test-sources, generate-test-resources, process-test-resources, test-compile, process-test-classes, test, prepare-package, package, pre-integration-test, integration-test, post-integration-test, verify, install, deploy]
Lifecycle clean -> [pre-clean, clean, post-clean]
Lifecycle site -> [pre-site, site, post-site, site-deploy]
=== PROJECT BUILD PLAN ================================================
Project:       com.mysite:myproject:1.0-SNAPSHOT
Dependencies (collect): []
Dependencies (resolve): [test]
Repositories (dependencies): [libs-release (http://artifactory.osc.no:8081/artifactory/libs-release/, releases), repo (file://C:\Users\Birger\Workspace\myproject/temp-repo, releases+snapshots), central (http://repo.maven.apache.org/maven2, releases)]
Repositories (plugins)     : [libs-release (http://artifactory.osc.no:8081/artifactory/libs-release/, releases), central (http://repo.maven.apache.org/maven2, releases)]
-----------------------------------------------------------------------
Goal:          org.codehaus.mojo:exec-maven-plugin:1.2.1:exec (default-cli)
Style:         Regular
Configuration: <?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <basedir default-value="${basedir}"/>
  <classpathScope default-value="runtime">${exec.classpathScope}</classpathScope>
  <commandlineArgs>${exec.args}</commandlineArgs>
  <executable>${exec.executable}</executable>
  <longClasspath default-value="false">${exec.longClasspath}</longClasspath>
  <outputFile>${exec.outputFile}</outputFile>
  <project default-value="${project}"/>
  <session default-value="${session}"/>
  <skip default-value="false">${skip}</skip>
  <sourceRoot>${sourceRoot}</sourceRoot>
  <testSourceRoot>${testSourceRoot}</testSourceRoot>
  <workingDirectory>${exec.workingdir}</workingDirectory>
</configuration>
=======================================================================
com.mysite:myproject:jar:1.0-SNAPSHOT
   jni4net:jni4net.j:jar:0.8.8.0:compile

--- exec-maven-plugin:1.2.1:exec (default-cli) @ myproject ---
Created new class realm maven.api
Importing foreign packages into class realm maven.api
  Imported: org.apache.maven.cli < maven.ext
  Imported: org.codehaus.plexus.lifecycle < maven.ext
  Imported: org.apache.maven.lifecycle < maven.ext
  Imported: org.apache.maven.repository < maven.ext
  Imported: org.codehaus.plexus.personality < maven.ext
  Imported: org.apache.maven.usability < maven.ext
  Imported: org.codehaus.plexus.configuration < maven.ext
  Imported: org.sonatype.aether.version < maven.ext
  Imported: org.sonatype.aether.* < maven.ext
  Imported: org.sonatype.aether.artifact < maven.ext
  Imported: org.apache.maven.* < maven.ext
  Imported: org.apache.maven.project < maven.ext
  Imported: org.sonatype.aether.repository < maven.ext
  Imported: org.sonatype.aether.impl < maven.ext
  Imported: org.apache.maven.exception < maven.ext
  Imported: org.apache.maven.plugin < maven.ext
  Imported: org.sonatype.aether.collection < maven.ext
  Imported: org.codehaus.plexus.* < maven.ext
  Imported: org.codehaus.plexus.logging < maven.ext
  Imported: org.apache.maven.profiles < maven.ext
  Imported: org.sonatype.aether.metadata < maven.ext
  Imported: org.sonatype.aether.spi < maven.ext
  Imported: org.codehaus.plexus.util.xml.pull.XmlPullParserException < maven.ext
  Imported: org.apache.maven.wagon.* < maven.ext
  Imported: org.sonatype.aether.graph < maven.ext
  Imported: org.apache.maven.rtinfo < maven.ext
  Imported: org.sonatype.aether.installation < maven.ext
  Imported: org.apache.maven.monitor < maven.ext
  Imported: org.sonatype.aether.transfer < maven.ext
  Imported: org.codehaus.plexus.context < maven.ext
  Imported: org.apache.maven.wagon.observers < maven.ext
  Imported: org.apache.maven.wagon.resource < maven.ext
  Imported: org.sonatype.aether.deployment < maven.ext
  Imported: org.apache.maven.model < maven.ext
  Imported: org.codehaus.plexus.util.xml.Xpp3Dom < maven.ext
  Imported: org.apache.maven.artifact < maven.ext
  Imported: org.apache.maven.toolchain < maven.ext
  Imported: org.codehaus.plexus.util.xml.pull.XmlSerializer < maven.ext
  Imported: org.apache.maven.settings < maven.ext
  Imported: org.apache.maven.wagon.authorization < maven.ext
  Imported: org.apache.maven.wagon.events < maven.ext
  Imported: org.apache.maven.wagon.authentication < maven.ext
  Imported: org.apache.maven.reporting < maven.ext
  Imported: org.apache.maven.wagon.repository < maven.ext
  Imported: org.apache.maven.configuration < maven.ext
  Imported: org.codehaus.plexus.classworlds < maven.ext
  Imported: org.codehaus.classworlds < maven.ext
  Imported: org.codehaus.plexus.util.xml.pull.XmlPullParser < maven.ext
  Imported: org.apache.maven.classrealm < maven.ext
  Imported: org.sonatype.aether.resolution < maven.ext
  Imported: org.apache.maven.execution < maven.ext
  Imported: org.apache.maven.wagon.proxy < maven.ext
  Imported: org.codehaus.plexus.container < maven.ext
  Imported: org.codehaus.plexus.component < maven.ext
Populating class realm maven.api
org.codehaus.mojo:exec-maven-plugin:jar:1.2.1:
   org.apache.maven:maven-toolchain:jar:1.0:compile
   org.apache.maven:maven-project:jar:2.0.6:compile
      org.apache.maven:maven-settings:jar:2.0.6:compile
      org.apache.maven:maven-profile:jar:2.0.6:compile
      org.apache.maven:maven-plugin-registry:jar:2.0.6:compile
   org.apache.maven:maven-model:jar:2.0.6:compile
   org.apache.maven:maven-artifact:jar:2.0.6:compile
   org.apache.maven:maven-artifact-manager:jar:2.0.6:compile
      org.apache.maven:maven-repository-metadata:jar:2.0.6:compile
   org.apache.maven:maven-core:jar:2.0.6:compile
      org.apache.maven:maven-plugin-parameter-documenter:jar:2.0.6:compile
      org.apache.maven.reporting:maven-reporting-api:jar:2.0.6:compile
         org.apache.maven.doxia:doxia-sink-api:jar:1.0-alpha-7:compile
      org.apache.maven:maven-error-diagnostics:jar:2.0.6:compile
      commons-cli:commons-cli:jar:1.0:compile
      org.apache.maven:maven-plugin-descriptor:jar:2.0.6:compile
      org.codehaus.plexus:plexus-interactivity-api:jar:1.0-alpha-4:compile
      org.apache.maven:maven-monitor:jar:2.0.6:compile
      classworlds:classworlds:jar:1.1:compile
   org.apache.maven:maven-plugin-api:jar:2.0.6:compile
   org.codehaus.plexus:plexus-utils:jar:2.0.5:compile
   org.codehaus.plexus:plexus-container-default:jar:1.0-alpha-9:compile
      junit:junit:jar:3.8.2:test (scope managed from compile) (version managed from 3.8.1)
   org.apache.commons:commons-exec:jar:1.1:compile
Created new class realm plugin>org.codehaus.mojo:exec-maven-plugin:1.2.1
Importing foreign packages into class realm plugin>org.codehaus.mojo:exec-maven-plugin:1.2.1
  Imported:  < maven.api
Populating class realm plugin>org.codehaus.mojo:exec-maven-plugin:1.2.1
  Included: org.codehaus.mojo:exec-maven-plugin:jar:1.2.1
  Included: org.apache.maven.reporting:maven-reporting-api:jar:2.0.6
  Included: org.apache.maven.doxia:doxia-sink-api:jar:1.0-alpha-7
  Included: commons-cli:commons-cli:jar:1.0
  Included: org.codehaus.plexus:plexus-interactivity-api:jar:1.0-alpha-4
  Included: org.codehaus.plexus:plexus-utils:jar:2.0.5
  Included: org.apache.commons:commons-exec:jar:1.1
  Excluded: org.apache.maven:maven-toolchain:jar:1.0
  Excluded: org.apache.maven:maven-project:jar:2.0.6
  Excluded: org.apache.maven:maven-settings:jar:2.0.6
  Excluded: org.apache.maven:maven-profile:jar:2.0.6
  Excluded: org.apache.maven:maven-plugin-registry:jar:2.0.6
  Excluded: org.apache.maven:maven-model:jar:2.0.6
  Excluded: org.apache.maven:maven-artifact:jar:2.0.6
  Excluded: org.apache.maven:maven-artifact-manager:jar:2.0.6
  Excluded: org.apache.maven:maven-repository-metadata:jar:2.0.6
  Excluded: org.apache.maven:maven-core:jar:2.0.6
  Excluded: org.apache.maven:maven-plugin-parameter-documenter:jar:2.0.6
  Excluded: org.apache.maven:maven-error-diagnostics:jar:2.0.6
  Excluded: org.apache.maven:maven-plugin-descriptor:jar:2.0.6
  Excluded: org.apache.maven:maven-monitor:jar:2.0.6
  Excluded: classworlds:classworlds:jar:1.1
  Excluded: org.apache.maven:maven-plugin-api:jar:2.0.6
  Excluded: org.codehaus.plexus:plexus-container-default:jar:1.0-alpha-9
  Excluded: junit:junit:jar:3.8.2
Configuring mojo org.codehaus.mojo:exec-maven-plugin:1.2.1:exec from plugin realm ClassRealm[plugin>org.codehaus.mojo:exec-maven-plugin:1.2.1, parent: sun.misc.Launcher$AppClassLoader@5c647e05]
Configuring mojo 'org.codehaus.mojo:exec-maven-plugin:1.2.1:exec' with basic configurator -->
  (f) basedir = C:\Users\Birger\Workspace\myproject
  (f) classpathScope = runtime
  (f) commandlineArgs = -Djava.library.path=lib\ -classpath %classpath com.mysite.myproject.Main
  (f) executable = C:\Program Files\Java\jdk1.8.0_91\bin\java.exe
  (f) longClasspath = false
  (f) project = MavenProject: com.mysite:myproject:1.0-SNAPSHOT @ C:\Users\Birger\Workspace\myproject\pom.xml
  (f) session = org.apache.maven.execution.MavenSession@2ef14fe
  (f) skip = false
-- end configuration --
Collected project artifacts [jni4net:jni4net.j:jar:0.8.8.0:compile]
Collected project classpath [C:\Users\Birger\Workspace\myproject\target\classes]
dealing with jni4net:jni4net.j:jar:0.8.8.0:compile
Toolchains are ignored, 'executable' parameter is set to C:\Program Files\Java\jdk1.8.0_91\bin\java.exe
Executing command line: C:\Program Files\Java\jdk1.8.0_91\bin\java.exe -Djava.library.path=lib\ -classpath C:\Users\Birger\Workspace\myproject\target\classes;C:\Users\Birger\.m2\repository\jni4net\jni4net.j\0.8.8.0\jni4net.j-0.8.8.0.jar com.mysite.myproject.Main
Initialized!
Hello world!
------------------------------------------------------------------------
BUILD SUCCESS
------------------------------------------------------------------------
Total time: 1.360s
Finished at: Fri Jul 08 09:26:48 CEST 2016
Final Memory: 5M/245M
------------------------------------------------------------------------

尝试运行我的内置.jar时的命令行输出

C:\Users\Birger\Workspace\myproject\target>"C:\Program Files\Java\jdk1.8.0_91\bin\java.exe" -Djava.library.path=lib\ -jar myproject-1.0-SNAPSHOT.jar
Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Users\Birger\Workspace\myproject\target\lib\jni4net.n-0.8.8.0.dll: Can't load this .dll (machine code=0xbd) on a AMD 64-bit platform
        at java.lang.ClassLoader$NativeLibrary.load(Native Method)
        at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1857)
        at java.lang.Runtime.loadLibrary0(Runtime.java:870)
        at java.lang.System.loadLibrary(System.java:1122)
        at com.mysite.myproject.Main.<clinit>(Main.java:11)

编辑2:

对于希望重现此错误的任何人,jni4net可以找到here。我使用此Windows批处理文件安装了.jar:

set project_dir=YOURPROJECTDIRECTORYHERE
set proxygen_dir=YOURPROXYGENINSTALLATIONDIRECTORYHERE
set temp_repo_dir=%project_dir%\temp-repo
call mvn install:install-file -DlocalRepositoryPath=%temp_repo_dir% -DcreateChecksum=true -Dpackaging=jar -Dfile=%proxygen_dir%\lib\jni4net.j-0.8.8.0.jar -DgroupId=jni4net -DartifactId=jni4net.j -Dversion=0.8.8.0

EDIT3:

我安装了32位JVM,并尝试使用以下命令运行该应用程序:

"C:\Program Files (x86)\Java\jre1.8.0_91\bin\java.exe" -Djava.library.path=lib\ -jar myproject-1.0-SNAPSHOT.jar

现在我得到:

Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Users\Birger\Workspace\myproject\target\lib\jni4net.n.w32.v20-0.8.8.0.dll: Can't load this .dll (machine code=0xbd) on a IA 32-bit platform
    at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    at java.lang.ClassLoader.loadLibrary0(Unknown Source)
    at java.lang.ClassLoader.loadLibrary(Unknown Source)
    at java.lang.Runtime.loadLibrary0(Unknown Source)
    at java.lang.System.loadLibrary(Unknown Source)
    at com.mysite.myproject.Main.<clinit>(Main.java:19)

我在这里变得非常绝望(对Java tbh感到有些沮丧)

编辑4:

尝试了以下命令,但也不起作用:

"C:\Program Files\Java\jdk1.8.0_91\bin\java" -Djava.library.path=lib\ -classpath C:\Users\Birger\Workspace\myproject\target\classes;C:\Users\Birger\.m2\repositor‌​y\jni4net\jni4net.j\0.8.8.0\jni4net.j-0.8.8.0.jar com.mysite.myproject.Main
"C:\Program Files\Java\jdk1.8.0_91\bin\java" -Djava.library.path=lib\ -classpath classes;C:\Users\Birger\.m2\repositor‌​y\jni4net\jni4net.j\0.8.8.0\jni4net.j-0.8.8.0.jar com.mysite.myproject.Main
"C:\Program Files\Java\jdk1.8.0_91\bin\java" -Djava.library.path=lib\ -classpath classes com.mysite.myproject.Main

参考方案

我很久以前就遇到了这个问题。

只需删除<filtering>true</filtering>,这会使文件在复制时损坏。 (臭虫!! ???)

我能够重现您的问题。这也可以解决您的问题

希望这可以帮助。

Maven:从jar工件中排除生成的源 - java

Duplicate,但没有答案,无法评论背景信息:我有一个模块,该模块使用xmlbeans-maven-plugin从xsd生成Java源文件并将其编译到其自己的jar中。这可以正常工作,并使用Java源代码创建一个module1 / target / generated-sources文件夹。该模块已构建,但生成的源包含在jar中,这是不必要的,因为xml…

通过Maven编译器插件不会发生有限的包含和排除 - java

我正在使用3.6.0版的maven编译器插件,在此我们只想在特定文件夹中编译一个文件,而在该位置编译所有其他文件。例如:在文件夹应用程序中有14个文件,从那我只希望编译1个文件,但它编译了所有文件,如果我要排除,则它也不起作用。 <sourceDirectory>${basedir}/../src/java</sourceDirectory…

缺少Jacoco代码覆盖率和IncompatibleClassChangeError - java

我有一个带有一些Arquillian测试(包括Drone / Graphene测试)的Maven项目。当我使用Maven构建项目时,所有使用Graphene和Drone或Warp的Arquillian测试都将失败,并出现以下异常Running de.mmo.arq.model.diverses.stammdaten.geldinstitut.Geldinst…

Maven的Shade插件产生的罐子之间有什么区别? - java

在我的Maven项目中,我尝试使用maven-shade-plugin在运行mvn package时生成一个超级jar。结果,我的目标目录中出现三个jar:original-hello-world-0.1.0-SNAPSHOT.jar hello-world-0.1.0-SNAPSHOT.jar hello-world-0.1.0-SNAPSHOT-shad…

无法在Maven surefire中运行多个执行? - java

我想运行名称以ResourceTest.java结尾的测试类,因此我在执行后定义了它们。<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <co…