小编MrF*_*man的帖子

Maven编译器插件看不到Lombok的注释

在我的应用程序中,我有 3 个这样的模块:

permissions (parent pom)
|---permission-api (just api, without main spring class)
|---permission-service (spring boot app)
Run Code Online (Sandbox Code Playgroud)

在主模块的父pom中,我有pom,其中包含:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.6.3</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
<modules>
    <module>permissions-api</module>
    <module>permissions-service</module>
</modules>
Run Code Online (Sandbox Code Playgroud)

和一些依赖项。现在我想用 Maven clean install 构建我的整个项目。Permission-api模块已构建(lombok注释没有问题)。在 pom 中,对 lombok 的唯一引用是:

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>
Run Code Online (Sandbox Code Playgroud)

无论如何,当我尝试仅构建权限服务或整个项目时,我遇到了如下编译错误:

cannot find symbol
[ERROR]   symbol:   method getPermissionsList()
[ERROR]   location: variable employee of type permissions.model.entity.Employee
Run Code Online (Sandbox Code Playgroud)

我知道我应该将 maven-compiler-plugin 添加到 pom.xml (我也尝试将其添加到父 pom 中),我这样做了,但没有帮助:

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>


    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId> …
Run Code Online (Sandbox Code Playgroud)

java spring maven lombok maven-compiler-plugin

5
推荐指数
1
解决办法
2936
查看次数

当我什至不使用参数化测试时,为什么会出现 ParameterResolutionException?

我想为我的 BookService 编写一个测试。这就是那个测试。我不知道为什么我总是收到以下错误:

org.junit.jupiter.api.extension.ParameterResolutionException: No ParameterResolver registered for parameter 
[com.mrfisherman.library.service.domain.BookService bookService] in constructor 
[public com.mrfisherman.library.service.domain.BookServiceTest(com.mrfisherman.library.service.domain.BookService,
com.mrfisherman.library.persistence.repository.BookRepository)].
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我在这里不使用参数化测试。先感谢您!

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = Server.class)
class BookServiceTest {

    private final BookService bookService;
    private final BookRepository bookRepository;

    public BookServiceTest(BookService bookService, BookRepository bookRepository) {
        this.bookService = bookService;
        this.bookRepository = bookRepository;
    }

    @Test
    void saveBook() {
        //given
        Book book = new Book();
        book.setTitle("Book 1");
        book.setPublishYear(1990);
        book.setType(BookFormat.REAL);
        book.setIsbn("1234567890");
        book.setDescription("Very good book");
        book.setNumberOfPages(190);
        book.setSummary("Very short summary");
        book.setCategories(Set.of(new Category("horror"), new Category("drama")));

        //when
        bookService.saveBook(book);

        //then
        Optional<Book> loaded = bookRepository.findById(book.getId()); …
Run Code Online (Sandbox Code Playgroud)

java junit spring-test junit5

4
推荐指数
1
解决办法
1万
查看次数

如何从 Java 8 中的流中收集自定义类对象?

我有一个Map<Flashcard, FlashcardStats> flashcards. Flashcard 类包含两个字段:字符串术语和字符串定义。当我必须从抽认卡中找到特定的抽认卡时,我该如何通过 Java 8 Streams 来完成?如何收集 Flashcard 对象或仅具有术语的定义字段?

例如:

private static String getWrongAnswerMessage(Map<Flashcard, FlashcardStats> flashcards, String term, String answer) {

Flashcard flashcard = flashcards.keySet().stream().filter(o -> o.getTerm().equals(term)).collect() //what now
Run Code Online (Sandbox Code Playgroud)

java java-8 java-stream

3
推荐指数
1
解决办法
381
查看次数

当 Optional 为空值时如何做一些操作?

在我的流中,我想根据用户的输入获取 MainMenuOption。如果枚举 MainMenuOptions 包含这样的选项,我想返回它,如果没有 - 打印一些消息“没有这样的选项”并再次获取用户的输入。

return Arrays.stream(MainMenuOptions.values())
            .filter(x -> x.getCommand().equals(ConsoleInput.getNextLineFromUser()))
            .findFirst() // it returns Optional<MainMenuOptions>
            .orElse(); //or Else return some value, cannot do something
Run Code Online (Sandbox Code Playgroud)

我如何使用 Java Steams 实现它?

先感谢您。

java optional java-stream

3
推荐指数
1
解决办法
76
查看次数

为什么当我尝试终止 EC2 实例时会创建新实例?

早上好,我有一个免费套餐 EC2 实例,现在我想停止它并删除它。问题是,当我尝试终止正在运行的 EC2 实例时,AWS 会终止它,但它会创建新实例(与终止相同)。如何完全终止并删除AWS EC2实例?

在此输入图像描述

正如您所看到的,它应该在终止时删除:在此输入图像描述

amazon-ec2 amazon-web-services aws-devops

-1
推荐指数
1
解决办法
526
查看次数