Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java maven可以在编译项目时更改包声明吗?_Java_Maven - Fatal编程技术网

Java maven可以在编译项目时更改包声明吗?

Java maven可以在编译项目时更改包声明吗?,java,maven,Java,Maven,好吧,我在谷歌上搜索了很多次这个话题,但我还没有找到答案:maven可以在编译项目之前更改包声明吗 我的目标是让项目A(它是一个API)都在一个包中,并且每个项目B和C都将使用对eclipse的相同依赖关系。我的目标是,一旦maven即将编译项目,包声明将更改为该项目的特定包,然后它编译项目 这是很有用的,因为我有许多项目使用相同的API,我不断地对API本身进行更改以满足我的需要,但是必须对每个项目进行彻底检查并再次进行更改是一种痛苦 如果你知道怎么做,更重要的是,如果可能的话,请告诉我。提前

好吧,我在谷歌上搜索了很多次这个话题,但我还没有找到答案:maven可以在编译项目之前更改包声明吗

我的目标是让项目A(它是一个API)都在一个包中,并且每个项目B和C都将使用对eclipse的相同依赖关系。我的目标是,一旦maven即将编译项目,包声明将更改为该项目的特定包,然后它编译项目

这是很有用的,因为我有许多项目使用相同的API,我不断地对API本身进行更改以满足我的需要,但是必须对每个项目进行彻底检查并再次进行更改是一种痛苦


如果你知道怎么做,更重要的是,如果可能的话,请告诉我。提前谢谢

谷歌的maven replacer插件可以做这样的事情,它可以在构建时编辑您的java文件。我用它来消除自动生成的java文件中的警告。它肯定可以用于更邪恶的事情

    <plugin>
        <groupId>com.google.code.maven-replacer-plugin</groupId>
        <artifactId>maven-replacer-plugin</artifactId>
        <version>1.3.2</version>
        <executions>
            <execution>
                <phase>generate-sources</phase>
                <goals>
                    <goal>replace</goal>
                </goals>
            </execution>
        </executions>
        <configuration>
            <includes>
                <include>src/main/java/mycodegen/**/*.java</include>
            </includes>
            <regex>true</regex>
            <regexFlags>
                <regexFlag>MULTILINE</regexFlag>
            </regexFlags>
            <replacements>
                <replacement>
                    <token>^public class</token>
                    <value>@SuppressWarnings("all") public class</value>
                </replacement>
            </replacements>
        </configuration>
    </plugin>

com.google.code.maven-replacer-plugin
maven替换插件
1.3.2
生成源
代替
src/main/java/mycodegen/***.java
真的
多行
^公共课
@SuppressWarnings(“全部”)公共类

这是我用过的。它应该非常类似于Java文件中的更改包声明。现在应该有更新版本的插件了。

这是可能的,但这不是Maven的目的。。。这里不是在扔石头,但是如果每次更改代码时都必须更改类文件中的包声明,那么可能是代码结构错误,或者没有充分利用IDE的重构工具。是的,我知道Maven不是这样做的。但总有一种可能性,那就是有一个插件可以做到这一点;由于有插件,Maven是一个非常模块化的系统,可以适合世界各地的许多java开发人员编辑:重构工具是一个很好的选择,是的,但据我所知,它们不能在项目中工作。尽管如此,自动完成比一次只做一件事要好得多。你是对的,这也是我用我的方式给出答案的原因,而不是仅仅说“不”。我见过(也使用过)像Maven应该使用的那样滥用插件,但我通常不鼓励其他人也这样做。尽管如此,我个人从来没有听说过一个插件可以做到这一点,但是,我也从来没有寻找过。尽管如此,通常创建的所有东西都不会被滥用,但最终都会被滥用。像这样的事情我不介意滥用,但我拒绝用它制造病毒和其他恶意的东西。我想做的这类事情只是为了方便,省去了我在使用API的20个项目中的每一个项目中都要做的麻烦,粘贴新包并将包更改为该项目的特定包。顺便说一下,我只想更改包,因为这些项目将同时运行,可能会有干扰。您使用的是什么IDE?在Eclipse中,Maven依赖项中的所有重构都在不同的项目中工作。我通常处理10多个相互依赖的项目,API中的更改反映在所有项目中。