当前位置: 首页 > 知识库问答 >
问题:

Maven generate sources文件夹未被Eclipse拾取

关志勇
2023-03-14

我正在将构建从Ant迁移到Maven。Ant构建用于编译“代码生成器”,执行这个“代码生成器”,它生成了一组Java和C代码。然后,它将生成的Java代码与其他一些代码一起编译,生成一个jar。

我已经在Maven中很容易地复制了这一点,当我从命令行运行时,它工作得很好,但Eclipse抱怨并给了我一个与pom文件相关的错误

无法在超文本传输协议中找到{group.id}:{artifact.id}: pom: 1.0.0-SNAPSHOT://{我们的内部站点存储库}/nexus/content/group/public缓存在本地存储库中,除非快照的更新间隔已经过去或强制更新,否则不会重新尝试解析

组所在的位置。id和工件。id是我的代码生成器插件的组和工件id

任何引用生成代码的代码也无法编译。

我的Maven构建包括

>

一个生成器插件项目,只包含将生成器包装为Maven插件的代码。这取决于发电机项目。

一个使用插件生成代码的xyz项目。代码最终位于该项目的目标/生成源/xxx文件夹中。我已根据Maven编译配置了build-helper-maven-plugin,其中包含多个src目录以包含这个额外的源目录。

如果我手动将生成的源文件夹添加到Eclipse构建路径,那么与不存在的代码相关的所有错误都会在该项目上消失,但不会在任何下游项目上消失,并且“找不到…”上面列出的错误仍然存在。

让我有点困惑的是,它指的是...: pom: 1.0.0-SNAPSHOT,而实际上我的生成器插件被定义为maven-plugin。

这是明智的做法吗?

为什么我收到“找不到......”错误?

为什么Eclipse不提取我生成的源代码文件夹?

我还应该说,我在Eclipse IDE中安装了m2e插件和m2e connector for build help maven插件。

共有2个答案

胡墨竹
2023-03-14

通过使用eclipse Indigo3.7,我发现使用Spring3.1.1效果很好,Spring3.1.1中也有3.0.6版本。一旦我得到插件设置并将其放入pom的正确区域,并包含argline和endorseddir,以便将java源代码放入target/generated sources/cxf文件夹,那么maven生成的源代码就可以了。

。。。。

 <properties>...

   <dependencyManagement>
      <dependencies>.....
   </dependencyManagement>

<dependencies>
   <dependency>....

</dependencies>



<!-- *************************** Build process ************************************* -->
<build>
    <finalName>projName</finalName>
    <plugins>
        <!-- Force Java 6 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
        <!-- Deployent on AS from console
        <plugin>
            <groupId>org.jboss.as.plugins</groupId>
            <artifactId>jboss-as-maven-plugin</artifactId>
            <version>${version.jboss.as.maven.plugin}</version>
        </plugin>
        -->

        <!-- wildbill added tomcat plugin -->
        <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.0</version>              
        </plugin>

        <!-- Surefire plugin before 2.9 version is buggy. No need to declare here,
              it's being referenced below w/ the version
        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.12</version>
        </plugin>
        -->

        <!-- developer added these -->   
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <compilerArguments>
                    <endorseddirs>target/generated-sources/cxf</endorseddirs>
                </compilerArguments>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.12</version>
            <configuration>
                <forkMode>once</forkMode>
                <argLine>-Djava.endorsed.dirs=target/generated-sources/cxf</argLine>
            </configuration>
        </plugin>           
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <compilerArguments>
                    <endorseddirs>target/generated-sources/cxf</endorseddirs>
                </compilerArguments>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <forkMode>once</forkMode>
                <argLine>-Djava.endorsed.dirs=target/generated-sources/cxf</argLine>
            </configuration>
        </plugin>                       
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>                       
            <configuration>
                <artifactItems>
                    <artifactItem>
                        <groupId>javax.xml.bind</groupId>
                        <artifactId>jaxb-api</artifactId>
                        <version>2.2</version>
                    </artifactItem>
                    <artifactItem>
                        <groupId>javax.xml.ws</groupId>
                        <artifactId>jaxws-api</artifactId>
                        <version>2.2</version>
                    </artifactItem>
                </artifactItems>
                <outputDirectory>target/generated-sources/cxf</outputDirectory>
            </configuration>                      
        </plugin>                                                 
    </plugins>
</build>



<!-- *********************** Profiles ************************************ -->
<profiles>
    <profile>
        <!-- When built in OpenShift the 'openshift' profile will be 
            used when invoking mvn. -->
        <!-- Use this profile for any OpenShift specific customization 
            your app will need. -->
        <!-- By default that is to put the resulting archive into the 
            'deployments' folder. -->
        <!-- http://maven.apache.org/guides/mini/guide-building-for-different-environments.html -->
        <id>projName</id>
        <build>
            <plugins>                                                   
                <plugin>
                    <groupId>org.apache.cxf</groupId>
                    <artifactId>cxf-codegen-plugin</artifactId>
                    <version>2.5.2</version>                        
                    <executions>
                        <execution>
                            <id>process-sources</id>
                            <phase>generate-sources</phase>                                                                                               
                            <configuration>
                                <fork>once</fork>
                                <additionalJvmArgs>-Djava.endorsed.dirs=target/generated-sources/cxf</additionalJvmArgs>                                          
                            </configuration>
                            <goals>                             
                                <goal>wsdl2java</goal>
                            </goals>
                        </execution>
                    </executions>                       
                    <dependencies>
                        <dependency>
                           <groupId>com.sun.xml.bind</groupId>
                           <artifactId>jaxb-impl</artifactId>
                           <version>2.2</version>
                        </dependency>
                        <dependency>
                           <groupId>com.sun.xml.bind</groupId>
                           <artifactId>jaxb-xjc</artifactId>
                           <version>2.2</version>
                        </dependency>
                     </dependencies>
                </plugin>

                <!-- Actual war created in default target dir -->
                <plugin>
                    <artifactId>maven-war-plugin</artifactId>
                                                     <version>2.2</version>                                               
                </plugin>
            </plugins>
        </build>
    </profile>
</profiles>

如果您的wsdl文件夹位于${basedir}/src/main/resources中,它将自动找到它

希望这有帮助!

那博瀚
2023-03-14

在从存储库下载lib的过程中似乎出现了问题。我已经收到过一次相同的错误消息。

>

  • 您是否查看了本地存储库?

    转到. m2文件夹并查找/nexus/内容/组/public。如果文件夹在那里,打开它并查看lib是否下载正确。如果没有,请尝试删除该文件夹并尝试运行mvn install以强制下载lib。

    在Eclipse中,运行右键

    您使用的是像artiFactory这样的本地存储库吗?还要在repo1-cache(或类似)文件夹中查找lib。看看jar是否在那里。

    您是否在任何防火墙或代理之后?

  •  类似资料:
    • 我有一个java,gradle项目。我的少年 选择一些配置 Junit中拾取此文件的代码是 当我奔跑时 这个很好用。Junit能够从csv文件中拾取数据。 当我在Eclipse中运行JUnit时,即通过Shift Alt X T,然后JUnit以空指针异常中断。 我明白原因。当我在eclipse中运行Junit时,它会在同一个文件夹中查找该文件,但没有找到它,因此失败。但是,当我使用gradle运

    • 我对HTML字体了解不多,我正在尝试更改所有元素的字体,而不必每次都指定一个类或样式。生成的HTML没有更改字体。 我的HTML(与Bootstrap一起使用)只是 并且我的样式表包含 我在样式表中更改了按钮的其他内容,并且它们被拾取,这样我就知道找到了样式表。 那我做错了什么?

    • 问题内容: 使用以下结构,如何使Eclipse正确构建WAR文件? 我需要以下文件夹才能进入以下输出文件夹: 将mail / src 转换为 mail / war / WEB-INF / classes 邮件/ www 到 邮件/ war / 我曾尝试在Eclipse中设置“输出”文件夹,但这只会导致Eclipse神奇地删除所有WEB-INF内容而不会告诉我! http://clausjoerge

    • 我试图建立一系列触发空手道场景的加特林测试。我对功能文件所做的更改只是偶尔被加特林发现。例如,在下面的功能文件代码中,运行前四个项目(包括注释掉的“关系”行): 其余的不是。请参阅运行结果的附加屏幕:在此输入图像描述 POM供参考版本: 我怀疑像编译文件这样的东西在进行更改时不会刷新或重新编译。

    • 问题内容: 我的Eclipse Java软件包被视为一个文件夹。谁能建议出什么问题了? 问题答案: 最坏的情况是,您必须删除文件夹并重新创建为Java程序包。 通过重构将Java类保存在Java项目中的其他位置 删除文件夹和基础文件夹结构 创建一个Java包 通过重构将Java类移回Java包下

    • 问题内容: 我正在渲染一个模板,尝试使用外部样式表进行样式设置。文件结构如下。 mainpage.html看起来像这样 我的样式均未应用。它与html是我正在渲染的模板有关吗?python看起来像这样。 我知道这很有效,因为我仍然能够渲染模板。但是,当我尝试将样式代码从html的“ head”标记中的“样式”块移动到外部文件时,所有样式消失了,仅留下了一个html页面。有人看到我的文件结构有任何错