为什么用nar-maven编译静态库时要加编译器选项/MD?

Why is compiler option /MD added when compiling static library with nar-maven?

当设置 library.typestatic 和 运行 mvn -X clean compile 时,DEBUG 输出显示:

[DEBUG] Execute:Java13CommandLauncher: Executing 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\cl' with arguments:
''
'/c'
'/nologo'
'/EHsc'
'/DNDEBUG'
'/MD'
'/GR'
...

包括 /MD 恕我直言,此处不应出现。这同样适用于编译 test.link 设置为 static 的测试可执行文件和编译 test.link 设置为 shared 的源文件。我唯一会使用 /MD 的情况是编译链接到共享库的可执行文件时。

即使 maven 生成一个静态库并且测试 运行 没有错误,在代码中设置 _DLL 定义混淆了我的 __declspec(dllexport/dllimport) 编译共享库的宏并且是在静态情况下根本不需要。

任何人都可以提示我是我在监督某事还是这可能是插件错误?

示例取自com.github.maven-nar网站的it0010-lib-static示例并对其进行修改,并将pom文件剥离到最小值:

pom.xml:

<build>
   <plugins>
      <plugin>
         <groupId>com.github.maven-nar</groupId>
         <artifactId>nar-maven-plugin</artifactId>
         <version>3.5.1</version>
         <extensions>true</extensions>
         <configuration>
            <libraries>
               <library>
                  <type>static</type>
               </library>
            </libraries>
            <linker>
               <name>msvc</name>
            </linker>
            <tests>
               <test>
                  <name>HelloWorldTest</name>
                  <link>static</link>
               </test>
            </tests>
         </configuration>
      </plugin>
   </plugins>
</build>

/MD 和 /MT 编译器标志由我监督的 <runtime/> 属性 控制,它指定生成的工件对动态 C 运行时库 (CRT) 的依赖性

虽然针对(运行时 | library.type)属性 对的不同组合生成的库和测试可执行文件的 很明显:

(static | static) : 使用 /MT,静态库、测试和库没有 CRT dep
(静态 | 共享):/MT 使用,dyn lib、test 和 lib 没有 CRT dep,测试在 dll 上有 rt dep
(dynamic | static): /MD used, static lib, test 和 lib 有 CRT dep
(动态 | 共享):/MD 使用,dyn lib,test 和 lib 有 CRT dep,test 有 rt dep on dll

备注: