11.12.1. Using unrestricted generated artifacts

In the next example we use "unrestricted" in combination with a redefined default interface:

// main file components.arc
template Components
{
    include "**/com/hello2morrow/(*)/**"
    exclude "**/com/hello2morrow/framework/**"

    unrestricted artifact capitalize($1)+"Component"
    {
        apply "layering"

        interface default
        {
            export Service, Model, Util
        }
    }
}

public artifact Framework
{
    include "**/com/hello2morrow/framework/**"    
}
        

Now the 3 generated artifacts can call each other, but only the "Service", "Model" and "Util" layers are exposed. If one of those generated artifacts were to access the "DataAccess" layer of another one this would be marked as an architecture violation.