首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用maven属性替换Java注释值?

如何用maven属性替换Java注释值?
EN

Stack Overflow用户
提问于 2017-10-19 17:51:44
回答 2查看 605关注 0票数 1

我在一个类上有一个注释@SecurityDomain("cjm")。根据我部署应用程序的环境,我需要配置不同的安全域。所以我的想法是使用过滤:@SecurityDomain("${project.name}")

然而,使用我在SO上找到的示例,什么都不起作用。我根本不能替换这个属性

奇怪的是,我还没有找到一个很好的解决方案。也许我用了错误的术语进行搜索。或者,奇怪的是,这(仍然)是不可能的。

maven模板插件是不够的,它没有包含过滤器,所以我有很多重复的类编译错误。

该项目是一个Java EE项目,使用keycloak saml安全适配器在Red Hat EAP7上运行。@SecurityDomain是将安全上下文从web上下文传播到ejb上下文所必需的。在使用@RolesAllowed时,这是必需的。我向keycloak团队记录了一个增强请求,以自动传播安全上下文,就像在默认场景中所做的那样。

EN

回答 2

Stack Overflow用户

发布于 2021-09-29 15:05:28

你可以使用maven插件"templating-maven- plugin“。

在你的pom.xml中声明它,添加调用目标"filter-sources“:

代码语言:javascript
复制
<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>templating-maven-plugin</artifactId>
            <version>1.0.0</version>
            <executions>
                <execution>
                    <id>filter-src</id>
                    <goals>
                        <goal>filter-sources</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

代码语言:javascript
复制
public interface MyMavenBuildConstant {
     String PROJECT_NAME = "${project.name}";
}

运行maven构建(例如来创建生成的java源/target/generated-sources/java-templates/MyMavenBuildConstant.java.。

现在可以在代码中使用java常量:

代码语言:javascript
复制
@SecurityDomain(MyMavenBuildConstant.PROJECT_NAME)
票数 0
EN

Stack Overflow用户

发布于 2017-10-19 21:06:06

例如,您可以在任何Maven构建阶段设置环境变量,这取决于您的配置文件。然后使用System.environment()在运行时阶段使用它们。

就现代Docker容器的交付方式而言,它也应该是一种更可取的方式

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46827182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档