java - 从 Maven 调用 msbuild 时出错

标签 java maven msbuild maven-plugin

我正在尝试将一个项目集成到具有两个组件的 Maven 中 - 客户端(用 silverlight 编写)和服务器(用 java 编写)。服务器端完全兼容 Maven,但我在使用 Maven 运行 msbuild 时遇到问题。我收到以下访问被拒绝错误

嵌入错误:无法运行程序“C:\WINDOWS\Microsoft.NET\Framework\v4.0.3031 9\msbuild”(在目录“C:\workspace\something\client”中):CreateProcess error=5, 访问被拒绝

机器:Windows XP shell:git bash 和 cmd

pom.xml:

        <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>x</groupId>
      <artifactId>client</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <packaging>pom</packaging>
      <name>client</name>
     <build>
       <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <configuration>
                <executable>${msbuild.path}</executable>
            </configuration>
            <executions>
                 <execution>
                 <id>clean</id>
                 <phase>clean</phase>
                 <configuration>
                <arguments>
                <argument>/t:Clean</argument>
                </arguments>
             </configuration>
             <goals>
                 <goal>exec</goal>
             </goals>
             </execution>
             <execution>
             <id>build</id>
             <phase>compile</phase>
             <configuration>
                 <arguments>
                <argument>/t:some.sln</argument>
                 </arguments>
             </configuration>
                 <goals>
                    <goal>exec</goal>
                 </goals>
             </execution>
           </executions>
        </plugin>
      </plugins>
     </build>
    </project>

错误:

        $ mvn compile -Dmsbuild.path=C:/WINDOWS/Microsoft.NET/Framework/v4.0.30319/msbu
    ild -e
    + Error stacktraces are turned on.
    [INFO] Scanning for projects...
    [INFO] ------------------------------------------------------------------------
    [INFO] Building client
    [INFO]    task-segment: [compile]
    [INFO] ------------------------------------------------------------------------
    [INFO] [exec:exec {execution: build}]
    [INFO] ------------------------------------------------------------------------
    [ERROR] BUILD ERROR
    [INFO] ------------------------------------------------------------------------
    [INFO] Command execution failed.

    Embedded error: Cannot run program "C:\WINDOWS\Microsoft.NET\Framework\v4.0.3031
    9\msbuild" (in directory "c:\workspace\something\client"): CreateProcess error=5,
     Access is denied
    [INFO] ------------------------------------------------------------------------
    [INFO] Trace
    org.apache.maven.lifecycle.LifecycleExecutionException: Command execution failed
    .
            at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(Defa
    ultLifecycleExecutor.java:719)
            at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLi
    fecycle(DefaultLifecycleExecutor.java:556)
            at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(Defau
    ltLifecycleExecutor.java:535)
            at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHan
    dleFailures(DefaultLifecycleExecutor.java:387)
            at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegmen
    ts(DefaultLifecycleExecutor.java:348)
            at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLi
    fecycleExecutor.java:180)
            at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
            at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
            at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
            at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:6
    0)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
    java:39)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
    sorImpl.java:25)
            at java.lang.reflect.Method.invoke(Method.java:597)
            at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
            at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
            at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)

            at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
    Caused by: org.apache.maven.plugin.MojoExecutionException: Command execution fai
    led.
            at org.codehaus.mojo.exec.ExecMojo.execute(ExecMojo.java:363)
            at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPlugi
    nManager.java:490)
            at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(Defa
    ultLifecycleExecutor.java:694)
            ... 17 more
    Caused by: java.io.IOException: Cannot run program "C:\WINDOWS\Microsoft.NET\Fra
    mework\v4.0.30319\msbuild" (in directory "c:\workspace\something\client"): Create
    Process error=5, Access is denied
            at java.lang.ProcessBuilder.start(ProcessBuilder.java:460)
            at java.lang.Runtime.exec(Runtime.java:593)
            at org.apache.commons.exec.launcher.Java13CommandLauncher.exec(Java13Com
    mandLauncher.java:58)
            at org.apache.commons.exec.DefaultExecutor.launch(DefaultExecutor.java:2
    54)
            at org.apache.commons.exec.DefaultExecutor.executeInternal(DefaultExecut
    or.java:319)
            at org.apache.commons.exec.DefaultExecutor.execute(DefaultExecutor.java:
    160)
            at org.codehaus.mojo.exec.ExecMojo.executeCommandLine(ExecMojo.java:602)

            at org.codehaus.mojo.exec.ExecMojo.execute(ExecMojo.java:348)
            ... 19 more
    Caused by: java.io.IOException: CreateProcess error=5, Access is denied
            at java.lang.ProcessImpl.create(Native Method)
            at java.lang.ProcessImpl.<init>(ProcessImpl.java:81)
            at java.lang.ProcessImpl.start(ProcessImpl.java:30)
            at java.lang.ProcessBuilder.start(ProcessBuilder.java:453)
            ... 26 more
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: < 1 second
    [INFO] Finished at: Tue Mar 27 10:33:58 CDT 2012
    [INFO] Final Memory: 7M/494M
    [INFO] ------------------------------------------------------------------------

有人成功使用 maven/java 运行 msbuild 或使用 maven 运行任何 Windows 进程/批处理文件吗?

最佳答案

可能是因为您的 ${msbuild.path} 属性解析为 C:\Windows\...\msbuild 这是一个文件夹,而不是 C:\Windows\...\msbuild.exe,可执行文件。

关于java - 从 Maven 调用 msbuild 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9893279/

相关文章:

java - Python WS 服务器和 Java WS 客户端

java - 在 Maven 插件执行中禁用目标

msbuild - ClickOnce 部署所需的最低版本使用 MSBuild 自动递增

msbuild - TeamCity - MSBuild 无法找到 NuGet 引用

msbuild - 无法安装包 EntityFrameworkCore.Tools.DotNet 版本 1.1.0-preview4-final

Java EE、Tomcat 和 SpringMVC

java - 解析日期时如何保持时区?

java - 如何检索 FileInputStream 的原始文件

java - 如何从maven项目中自动排除未使用的jar文件?

java - Maven 拉取旧版本的传递依赖